<html>
<head><meta charset="utf-8"><title>MCP: move compiler/ crates to stable Rust compiler-team#358 · t-compiler/major changes · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/index.html">t-compiler/major changes</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html">MCP: move compiler/ crates to stable Rust compiler-team#358</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="209910822"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209910822" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> triagebot <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209910822">(Sep 13 2020 at 02:59)</a>:</h4>
<p>A new proposal has been announced: <a href="https://github.com/rust-lang/compiler-team/issues/358">MCP: move compiler/ crates to stable Rust #358</a>. It will be announced at the next meeting to try and draw attention to it, but usually MCPs are not discussed during triage meetings. If you think this would benefit from discussion amongst the team, consider proposing a design meeting.</p>



<a name="209911250"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209911250" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Hill <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209911250">(Sep 13 2020 at 03:16)</a>:</h4>
<p>I'm not convinced that this is a good idea. The compiler is one of the places where new nightly features can be tested out, which can help expose issues or design flaws in features before they are stabilized</p>



<a name="209911299"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209911299" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Hill <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209911299">(Sep 13 2020 at 03:19)</a>:</h4>
<p>Regarding a few of the points in the issue:</p>
<blockquote>
<p>Easier onboarding of outside contributors from the stable Rust ecosystem as they have to learn less new features/mannerisms.</p>
</blockquote>
<p>While this is true for larger features (const generic, specialization, etc), I don't think this applies to 'std only' features. For example, it's convenient to have <code>bool::then_some</code> available, and new contributors can easily learn what it does by reading the docs.</p>
<blockquote>
<p>Unstable features sometimes still have rough edges and soundness holes. You need to be aware of these issues when using them, making it harder for contributors.</p>
</blockquote>
<p>I think the solution here is to make sound versions of these features (e.g. <code>min_specialization</code>), not to give up on nightly features entirely. However, I definitely agree that we should avoid using unsound features in the compiler.</p>



<a name="209911349"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209911349" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209911349">(Sep 13 2020 at 03:20)</a>:</h4>
<p>If we can't even have rustc work with beta libstd + rustc_bootstrap (<a href="#narrow/stream/131828-t-compiler/topic/Building.20rustc.20with.20beta.20libstd">https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/Building.20rustc.20with.20beta.20libstd</a>), this seems even less plausible :/</p>



<a name="209911397"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209911397" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Hill <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209911397">(Sep 13 2020 at 03:22)</a>:</h4>
<blockquote>
<p>From a high level point of view, rustc itself deals in data: text in, binary out. This process doesn't need nightly features from a technical perspective, yet the compiler uses many.</p>
</blockquote>
<p>I feel like this applies to almost any Rust program. For example, the Rocket web framework is 'just' text in, text out (HTTP request -&gt; HTTP response), but it required nightly until very recently. Many Rust programs probably don't need nightly features, but they can make things much more convenient.</p>



<a name="209911448"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209911448" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Hill <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209911448">(Sep 13 2020 at 03:24)</a>:</h4>
<p>As a personal note: compiler contributions account for nearly all of my work in Rust, and I really like have nightly features available. It's always frustrating when I go to contribute to a library, and find that something I want to use is unstable.</p>



<a name="209911639"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209911639" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mark-i-m <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209911639">(Sep 13 2020 at 03:30)</a>:</h4>
<p>I would argue that dogfooding features in the compiler is also critical to the way we find important bugs.</p>



<a name="209911707"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209911707" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mark-i-m <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209911707">(Sep 13 2020 at 03:33)</a>:</h4>
<blockquote>
<p>As rustc is crates.io-ified, outside users might want to use components of rustc. Often those outside users want to use stable themselves</p>
</blockquote>
<p>Presumably, the rustc API would still be unstable though, right? So is there any benefit of using stable rust anyway?</p>



<a name="209911980"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209911980" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209911980">(Sep 13 2020 at 03:43)</a>:</h4>
<p><span class="user-mention silent" data-user-id="125294">Aaron Hill</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358/near/209911250">said</a>:</p>
<blockquote>
<p>The compiler is one of the places where new nightly features can be tested out, which can help expose issues or design flaws in features before they are stabilized</p>
</blockquote>
<p>It's a fair point, but note that the Rust community has grown since the release, both stable and nightly communities, so since then there are far more eyes on potential nightly features, so the need for this has gone down. Furthermore, it's still possible to try out a nightly feature in a private branch.</p>
<p>Regarding <code>bool::then_some</code>: each nightly feature was added to the language to make something more convenient. The convenience increase is often only minimal though. My point is that stable Rust has become convenient and easy enough for the compiler to use it.</p>
<blockquote>
<p>Many Rust programs probably don't need nightly features, but they can make things much more convenient.</p>
</blockquote>
<p>Those programs also don't use <code>RUSTC_BOOTSTRAP</code> and claim to work on stable compilers :). They also don't need  to do <code>cfg(bootstrap)</code> when a nightly feature stabilizes or changes.</p>



<a name="209913050"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209913050" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209913050">(Sep 13 2020 at 04:22)</a>:</h4>
<p>I can certainly see an argument that if the compiler were prohibited from using nightly features, it could "strongly encourage" the teams to actually stabilize nightly features in a timely manner.</p>



<a name="209919534"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209919534" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209919534">(Sep 13 2020 at 08:03)</a>:</h4>
<p>I think there are two orthogonal reasons why this might be desirable:</p>
<ul>
<li>using standard rustup toolchain (nightly or beta)</li>
<li>using stable language</li>
</ul>
<p>In my opinion, the fist is much more important than the second. Ie, the gain from „rustc builds on stable with RUST_BOOTSTRP“ is bigger than the additional gain of removing bootstrap.</p>
<p>While rust-analyzer today builds on stable, I wouldn’t mind too much pining it to beta and requiring unlocking unstable features. I <em>would</em> mind requiring that it builds only with master std though.</p>



<a name="209919707"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209919707" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> bjorn3 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209919707">(Sep 13 2020 at 08:07)</a>:</h4>
<p>Making rustc compile on stable would make bootstrapping from old versions like rustc 1.29.0 (latest bootstrapable with mrustc) faster, as you can skip every other version. For example 1.48.0 which is currently in nightly could be built using 1.46.0 which is the latest stable. 1.50.0 would could be built using 1.48.0  and so on.</p>



<a name="209921855"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209921855" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Vadim Petrochenkov <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209921855">(Sep 13 2020 at 09:16)</a>:</h4>
<p>Compiler is a major testing ground for new features.<br>
Design of the new language features is often developed (or at least fine-tuned) and stabilized by the same people who work on the compiler, so it's useful to get some actual working experience with them before deciding on stabilization.</p>



<a name="209921872"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209921872" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Vadim Petrochenkov <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209921872">(Sep 13 2020 at 09:17)</a>:</h4>
<p>There are also features like <code>-Z binary-dep-depinfo</code> for which compiler bootstrapping is on of the primary intended use cases.</p>



<a name="209921965"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209921965" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Vadim Petrochenkov <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209921965">(Sep 13 2020 at 09:20)</a>:</h4>
<p>I'm totally ok with using the standard beta release unlocked with <code>RUSTC_BOOTSTRAP</code> though.<br>
(Aren't we already doing that?)</p>



<a name="209921998"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209921998" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209921998">(Sep 13 2020 at 09:21)</a>:</h4>
<p><span class="user-mention" data-user-id="123856">@Vadim Petrochenkov</span> we are not doing exactly that for compiling rustc itself: we use beta rustc + master libstd. This last bit makes the build weird.</p>



<a name="209922243"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209922243" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lcnr <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209922243">(Sep 13 2020 at 09:29)</a>:</h4>
<p>I fairly strongly feel that using nightly feature in the compiler is a net positive, but I do think that it would be nice if <code>cfg(bootstrap)</code> was not necessary and we were able to use the beta std when building stage 1.</p>
<p>I do think that this might just move the need for <code>cfg(bootstrap)</code> from std into the compiler though, as I don't see how PRs which change both libs and the compiler at the same time (eg <a href="https://github.com/rust-lang/rust/issues/70705">#70705</a>) would work otherwise, so I am not sure if that is a net improvement in the end.</p>



<a name="209925672"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209925672" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209925672">(Sep 13 2020 at 11:07)</a>:</h4>
<p>But why does that testing have to be committed into master? Wouldn't it be more helpful if instead of one person gaining experiences from porting the compiler to use a nightly feature, you have multiple people doing it in their own rustc github forks? Then they can compare their results instead of one port taking the opportunity away from everyone else.</p>
<p>One could also think about becoming more explicit about testing requirements before stabilizing a new feature. As in: in order to get a feature stabilized, someone must share their reports about having used the feature in a codebase of theirs and reported back on their experiences. Not every feature is being tested in rustc and such a policy would add rigor to the system.</p>



<a name="209925832"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209925832" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209925832">(Sep 13 2020 at 11:10)</a>:</h4>
<p>Meta note: I feel like we have a pretty sprawling discussion about bootstrapping, so it might make sense to create some kind of collaborative document to list all options, requirements and tradeoffs. </p>
<p>I might get to doing this today, but no promises, I am on vacation :P</p>



<a name="209925835"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209925835" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209925835">(Sep 13 2020 at 11:10)</a>:</h4>
<p>In fact, due to experimental features being put into master, rustc now has a problem of using features that have low chances of being stabilized, but the usage in rustc makes it harder to remove the features altogether. Basically, the cleanup part of the experiments is missing.</p>



<a name="209925855"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209925855" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209925855">(Sep 13 2020 at 11:11)</a>:</h4>
<p>Out of tree experiments would give you that for free :)</p>



<a name="209926316"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209926316" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209926316">(Sep 13 2020 at 11:20)</a>:</h4>
<p><span class="user-mention" data-user-id="133169">@matklad</span> I would love to collaborate on that, feel free to ping me :)</p>



<a name="209926534"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209926534" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209926534">(Sep 13 2020 at 11:26)</a>:</h4>
<p>As I've said in other streams, I personally think in the long run this might be nice, but not now. We already can run rustbuild with stock beta. I don't really think we can afford to do dogfooding on experimental branches - I frequently gain knowledge and experience not just by transitioning a codebase to use some new feature but also by seeing multiple features interact and how easy they are to understand when reviewing code rather than writing it.</p>
<p>I don't think the argument about it being harder to remove features just because rustc uses them is quite true - removing a feature that has no good replacement is unlikely <em>anyway</em> because one of our goals is not limiting people and forcing them to use other languages.</p>



<a name="209928922"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209928922" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209928922">(Sep 13 2020 at 12:30)</a>:</h4>
<blockquote>
<p>I do think that this might just move the need for cfg(bootstrap) from std into the compiler though, as I don't see how PRs which change both libs and the compiler at the same time (eg <a href="https://github.com/rust-lang/rust/issues/70705">#70705</a>) would work otherwise, so I am not sure if that is a net improvement in the end.</p>
</blockquote>
<p>The things I see using the new discriminant types are the doc-tests, which would be run with --stage 1 anyway, and <a href="https://github.com/rust-lang/rust/pull/70705/files?file-filters%5B%5D=.rs&amp;file-filters%5B%5D=.stderr#diff-8fbc542a08b9274446b2fbf02bd610b2">an assert in <code>rustc_middle</code></a>. Everything else is for <em>building</em> libstd with the feature, not using it in the compiler itself.</p>
<p>How much of a burden do you think it would be to not use <code>DiscriminantKind</code> there, or to use <code>cfg(not(bootstrap))</code> for it?</p>



<a name="209929339"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209929339" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209929339">(Sep 13 2020 at 12:40)</a>:</h4>
<p>DiscriminantKind in particular -- maybe not much. But it probably means that we cannot use unstable libs features in the compiler in general, and that seems really unfortunate.</p>



<a name="209929412"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209929412" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209929412">(Sep 13 2020 at 12:42)</a>:</h4>
<blockquote>
<p>we cannot use unstable libs features in the compiler in general</p>
</blockquote>
<p>We couldn't use unstable libs features <em>that had been added in the last 6 weeks</em></p>



<a name="209929414"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209929414" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209929414">(Sep 13 2020 at 12:42)</a>:</h4>
<p>that seems like much less of a burden to me</p>



<a name="209929485"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209929485" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209929485">(Sep 13 2020 at 12:44)</a>:</h4>
<p>no, you shouldn't use any, because if you use it after 6 weeks you end up with cfg(bootstrap) in the compiler when that feature changes, or have to revert that use.</p>



<a name="209929486"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209929486" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209929486">(Sep 13 2020 at 12:44)</a>:</h4>
<p>(and in most cases it would be less than 6 weeks because it would get halfway through the release cycle)</p>



<a name="209929747"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209929747" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209929747">(Sep 13 2020 at 12:51)</a>:</h4>
<p>I agree that if we, say, rename an unsatble API like <code>OnceCell</code>, this will break bootstrap (immediately). But this needs to happen only for features which <em>actually</em> change I think. The fix would be to either write the code in such a way which works with both new and old feature (which seems feasiblle for stdlib additions) or, indeed to use <code>#[cfg(bootstrap)]</code> (or just more general <code>autocfg</code>, to make sure that the crate is compatbile with a range of nightlies).</p>



<a name="209929827"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209929827" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209929827">(Sep 13 2020 at 12:53)</a>:</h4>
<p>A completely alternative venue here is to finish "make Cargo build custom std" work (at least as an unsable feature). That way, <code>rustc</code> would still be a "standard crate", just the one which uses custom std.</p>



<a name="209929860"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209929860" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209929860">(Sep 13 2020 at 12:53)</a>:</h4>
<p>I don't see what benefit that has over the current situation?</p>



<a name="209929905"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209929905" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209929905">(Sep 13 2020 at 12:54)</a>:</h4>
<p>bootstrapping is still hard to understand and you still have to <code>build --stage 0 library/std</code> before building the compiler</p>



<a name="209929908"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209929908" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209929908">(Sep 13 2020 at 12:54)</a>:</h4>
<p><code>cd compiler &amp;&amp; cargo test</code> works</p>



<a name="209929919"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209929919" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209929919">(Sep 13 2020 at 12:54)</a>:</h4>
<p>that works currently actually</p>



<a name="209929923"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209929923" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209929923">(Sep 13 2020 at 12:54)</a>:</h4>
<p>o_O how?</p>



<a name="209929932"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209929932" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209929932">(Sep 13 2020 at 12:55)</a>:</h4>
<p>Like, this needs to build std somehow, no?</p>



<a name="209929935"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209929935" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209929935">(Sep 13 2020 at 12:55)</a>:</h4>
<p>I tried this last night: <a href="#narrow/stream/131828-t-compiler/topic/Building.20rustc.20with.20beta.20libstd/near/209906334">https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/Building.20rustc.20with.20beta.20libstd/near/209906334</a></p>



<a name="209930019"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209930019" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209930019">(Sep 13 2020 at 12:57)</a>:</h4>
<p>Ok, let's collaborate this :-) </p>
<p><a href="https://hackmd.io/@matklad/rkvyHPsND/edit">https://hackmd.io/@matklad/rkvyHPsND/edit</a></p>



<a name="209931729"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209931729" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209931729">(Sep 13 2020 at 13:33)</a>:</h4>
<p><span class="user-mention" data-user-id="232545">@Joshua Nelson</span> </p>
<p>trying <code>cd compiler/rustc_middle &amp;&amp; cargo +beta check</code> gives me</p>
<div class="codehilite"><pre><span></span><code>error[E0412]: cannot find type `ControlFlow` in module `std::ops`
  --&gt; compiler/rustc_data_structures/src/graph/iterate/mod.rs:91:37
   |
91 | pub type ControlFlow&lt;T&gt; = std::ops::ControlFlow&lt;(), T&gt;;
   |                                     ^^^^^^^^^^^ not found in `std::ops`
</code></pre></div>


<p>which is what I'd expect</p>



<a name="209931782"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209931782" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209931782">(Sep 13 2020 at 13:34)</a>:</h4>
<p>does <code>cargo +nightly check</code> work?</p>



<a name="209931788"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209931788" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209931788">(Sep 13 2020 at 13:34)</a>:</h4>
<p>Maybe you got lucky and hit the rustc commit where it wasn't using any nightly features of libstd, which weren't at the same time in beta?</p>



<a name="209931789"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209931789" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209931789">(Sep 13 2020 at 13:34)</a>:</h4>
<p>remember that rustc only supports master libstd</p>



<a name="209931806"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209931806" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209931806">(Sep 13 2020 at 13:34)</a>:</h4>
<p>Ah, right, than we are trying to agree with each other I guess :)</p>



<a name="209931820"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209931820" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209931820">(Sep 13 2020 at 13:35)</a>:</h4>
<p>ok I see what you were saying before then, you <em>want</em> this to work with beta</p>



<a name="209931829"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209931829" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> matklad <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209931829">(Sep 13 2020 at 13:35)</a>:</h4>
<p>Yup</p>



<a name="209932432"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209932432" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209932432">(Sep 13 2020 at 13:48)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116122">simulacrum</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358/near/209929485">said</a>:</p>
<blockquote>
<p>no, you shouldn't use any, because if you use it after 6 weeks you end up with cfg(bootstrap) in the compiler when that feature changes, or have to revert that use.</p>
</blockquote>
<p><span class="user-mention silent" data-user-id="133169">matklad</span> helped me clear up some confusion on this point - this is sort of already the case, if you make breaking changes to unstable libstd features, you have to update the compiler. The difference in my idea is that you'd have to update it to be compatible with <em>both</em> beta and nightly libstd</p>



<a name="209934200"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209934200" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209934200">(Sep 13 2020 at 14:34)</a>:</h4>
<p>Yes, and my point is that dual compatibility is too hard an ask in general IMO, so if we go for that I'd personally want no unstable libs feature use (to avoid dual compatibility)</p>



<a name="209936234"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209936234" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aaron Hill <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209936234">(Sep 13 2020 at 15:29)</a>:</h4>
<blockquote>
<p>But why does that testing have to be committed into master? Wouldn't it be more helpful if instead of one person gaining experiences from porting the compiler to use a nightly feature, you have multiple people doing it in their own rustc github forks? Then they can compare their results instead of one port taking the opportunity away from everyone else.</p>
</blockquote>
<p>Practically speaking, I think almost no one will want to spend time rewriting code to use a nightly feature if it's never actually going to get merged. From personal experience, I've never created a PR that just adds a nightly feature usage - it's always part of some other PR.</p>
<p>I think "comparing results" is best done by looking at all of the different uses of a feature that have been committed to master. Having a bunch of (possibly bitrotted) branches that all touch the same thing doesn't seem very useful to me.</p>
<p>I'm sympathetic to the argument that compiling on stable/beta would simplify things w.r.t. libstd. However, I  think pushing for progress on the features we use (either stabilization or removal) is a better (though much more involved) way to accomplish this goal.</p>



<a name="209962536"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209962536" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> mark-i-m <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209962536">(Sep 14 2020 at 03:34)</a>:</h4>
<p>I haven't followed the conversation super closely, but I actually think we should be going for the reverse goal: make <code>libstd</code> build with a standard beta compiler and no bootstrapping. TMK, we are not that far from this today, and it would make a big difference for contributors if working on <code>libstd</code> had nothing to do with the compiler.</p>



<a name="209966701"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209966701" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209966701">(Sep 14 2020 at 05:35)</a>:</h4>
<p>You can already compile libstd with beta only</p>



<a name="209966714"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209966714" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209966714">(Sep 14 2020 at 05:35)</a>:</h4>
<p>And you fundamentally <em>need</em> to be able to compile it with stage1 in order to build stage 2</p>



<a name="209976330"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209976330" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209976330">(Sep 14 2020 at 08:16)</a>:</h4>
<p><span class="user-mention silent" data-user-id="125294">Aaron Hill</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358/near/209936234">said</a>:</p>
<blockquote>
<p>However, I  think pushing for progress on the features we use (either stabilization or removal) is a better (though much more involved) way to accomplish this goal.</p>
</blockquote>
<p>Yes absolutely, this is what I'd do as well. Triage the nightly features into two categories: the ones likely to stabilize and the ones that likely won't see stabilization because of open issues still. Then push for progress on the first category and move the compiler off the second. Example for first category: <code>cow_is_borrowed</code>, example for second: <code>crate_visibility_modifier</code>.</p>



<a name="209976390"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209976390" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209976390">(Sep 14 2020 at 08:17)</a>:</h4>
<p>So what you say here is not in conflict with my proposal.</p>



<a name="209989398"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209989398" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209989398">(Sep 14 2020 at 10:59)</a>:</h4>
<p>FYI I just made a feature use count, there are 61 features in use in total, with 30 lang features and 31 lib features.<br>
In total, there are 154 unstable lang features available and 261 lib features (sum is 415).</p>



<a name="209989429"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209989429" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209989429">(Sep 14 2020 at 11:00)</a>:</h4>
<p>So regarding the testing point, only a small subset of features are being tested right now</p>



<a name="209989589"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209989589" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209989589">(Sep 14 2020 at 11:01)</a>:</h4>
<p>Also good news for porting to stable: only 61 features to remove from the compiler/stabilize</p>



<a name="209994707"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209994707" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209994707">(Sep 14 2020 at 12:02)</a>:</h4>
<p>While I've read this whole thread, it's still not clear to me what exactly is being proposed. There seems to be at least two different competing proposals. </p>
<p>However, I will say that making <code>cargo build</code> and <code>cargo test</code> work for the standard library seems like a good thing to me. However, I'm not sure how valuable it is for the compiler. I use stage 2 builds a few times a month and I don't see how cargo could be contorted to make that work so it seems like we will have both <code>x.py</code> and <code>cargo</code> and I will probably stick with <code>x.py</code> for consistency. </p>
<p>Like many others in this thread, I think it's important that the compiler use nightly lang &amp; library features and I haven't seen an argument that's compelling to me personally to change that.</p>



<a name="209995283"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209995283" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209995283">(Sep 14 2020 at 12:09)</a>:</h4>
<p>I think "we do not use all possible features" is a poor argument for "we should not use any features".</p>
<p>For example, just recently, Niko used the use of crate visibility modifier in the compiler as a point of evaluation - <a href="https://github.com/rust-lang/rust/issues/53120#issuecomment-669529485">https://github.com/rust-lang/rust/issues/53120#issuecomment-669529485</a> - something that would basically not otherwise be readily available. You really do want that sort of organic usage.</p>



<a name="209995531"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209995531" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209995531">(Sep 14 2020 at 12:12)</a>:</h4>
<p>Making cargo build and cargo test work for the standard library definitely does not require any changes to stability; it already almost works today, and I suspect that with some work we could make it just work. The compiler working with plain cargo also mostly needs -Zbuild-std or similar pushed further on - and today the compiler can almost always be built on nightly with just cargo too. (If you carefully choose your base bors commit, this is essentially guaranteed).</p>



<a name="209999445"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209999445" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209999445">(Sep 14 2020 at 12:52)</a>:</h4>
<p><span class="user-mention" data-user-id="125250">@Wesley Wiser</span> I propose what's written in <a href="https://github.com/rust-lang/compiler-team/issues/358">https://github.com/rust-lang/compiler-team/issues/358</a> : removal of <code>#![feature(...)]</code> of anything in or depended by <code>compiler/</code>.</p>



<a name="209999668"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209999668" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209999668">(Sep 14 2020 at 12:54)</a>:</h4>
<p><span class="user-mention" data-user-id="116122">@simulacrum</span> you're aware that he was mentioning it in terms of having moved to stable? :) Apparently moving to stable motivates people to speak out in favour of stabilizing things. Sounds great to me ;).</p>



<a name="209999994"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/209999994" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#209999994">(Sep 14 2020 at 12:56)</a>:</h4>
<p>I am confused -- the point is, we would not have that datapoint or experience without the ability to use unstable features in the compiler. In this case, no decision has been made yet, but I am personally feeling like we should stabilize crate visibility in part <em>because of</em> working on the compiler and seeing its use there.</p>



<a name="210000023"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210000023" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210000023">(Sep 14 2020 at 12:56)</a>:</h4>
<p><span class="user-mention" data-user-id="125250">@Wesley Wiser</span> note that I'm not even sure about the schedule by which to make this change, whether to make it quickly or whether to set it as a long term goal and work towards reducing the number of unstable features first, but keeping those which are deemed valuable, e.g. for testing. Given the responses in this thread, I lean towards the latter.</p>



<a name="210000079"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210000079" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210000079">(Sep 14 2020 at 12:57)</a>:</h4>
<p>I am personally feeling like this should not be a goal we set, even for the long-term right now.</p>



<a name="210000143"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210000143" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210000143">(Sep 14 2020 at 12:57)</a>:</h4>
<p>The downsides seem to outweigh the upsides.</p>



<a name="210000279"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210000279" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210000279">(Sep 14 2020 at 12:58)</a>:</h4>
<p>From what I've read, I'd agree with what <span class="user-mention" data-user-id="125250">@Wesley Wiser</span> has said:</p>
<blockquote>
<p>Like many others in this thread, I think it's important that the compiler use nightly lang &amp; library features and I haven't seen an argument that's compelling to me personally to change that.</p>
</blockquote>



<a name="210000575"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210000575" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210000575">(Sep 14 2020 at 13:00)</a>:</h4>
<p>Note that there is a selection bias: the established compiler contributors already are familiar with nightly Rust features and the custom rustc workflows... the large costs are paid by new contributors as well as users, like people who might want to use crates-io-ified rustc crates for their own purposes.</p>



<a name="210000766"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210000766" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210000766">(Sep 14 2020 at 13:02)</a>:</h4>
<p>as someone who doesn't use nightly outside the rust compiler, I haven't found it to be a burden</p>



<a name="210000779"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210000779" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210000779">(Sep 14 2020 at 13:02)</a>:</h4>
<p>being able to use <code>box</code> is nice <span aria-label="laughing" class="emoji emoji-1f606" role="img" title="laughing">:laughing:</span></p>



<a name="210000825"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210000825" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210000825">(Sep 14 2020 at 13:02)</a>:</h4>
<p>and rustc changes so frequently that I'd expect anyone compiling it to use a pinned nightly + rustc source anyway</p>



<a name="210001041"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210001041" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210001041">(Sep 14 2020 at 13:04)</a>:</h4>
<p>"custom rustc workflows" isn't going to change (much) because we use stable, so I think we can remove that from consideration mostly.</p>



<a name="210001149"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210001149" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210001149">(Sep 14 2020 at 13:05)</a>:</h4>
<p>If users are struggling to use code because of a nightly feature that seems <em>good</em> and we should document that they should leave feedback to that effect -- it's really important to know of that kind of problem before we stabilize! So this seems like a benefit to me...</p>



<a name="210001334"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210001334" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210001334">(Sep 14 2020 at 13:07)</a>:</h4>
<p>wrt to crates-io-ified rustc crates, I think it may be reasonable to say that those libraries may want to be stable-compatible or at least have feature flags to do so. But, until we have concrete libraries to consider, I don't think there's enough to discuss here</p>



<a name="210001748"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210001748" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210001748">(Sep 14 2020 at 13:10)</a>:</h4>
<p>I can think of a couple of parts that rust-analyzer could consume if the defining crates built on stable:</p>
<ul>
<li>The built-in attribute list</li>
<li>The unstable feature list</li>
<li>The list of available lints (could be parsed from <code>rustc -Dhelp</code> too)</li>
</ul>
<p>Other than that, not much comes to mind.</p>



<a name="210003263"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210003263" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210003263">(Sep 14 2020 at 13:24)</a>:</h4>
<p>Right, I think there's definitely room for saying "these bits are nice to be able to use outside rustc, e.g., in rust-analyzer" and explicitly stabilizing those, but for now those bits are small and not even necessarily unstable already</p>



<a name="210004024"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210004024" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210004024">(Sep 14 2020 at 13:25)</a>:</h4>
<p><span class="user-mention silent" data-user-id="120096">est31</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358/near/210000575">said</a>:</p>
<blockquote>
<p>Note that there is a selection bias: the established compiler contributors already are familiar with nightly Rust features and the custom rustc workflows... the large costs are paid by new contributors as well as users, like people who might want to use crates-io-ified rustc crates for their own purposes.</p>
</blockquote>
<p>I think there's a lot of willingness within established contributors to make changes that would benefit new contributors. Speaking more generally, however:</p>
<ul>
<li>I think we're under-estimating the churn for existing contributors that recent changes (and changes like this) have had (I'm reminded of <a href="https://youtu.be/voXVTjwnn-U">this talk at a PyCon</a> about "trampling flower gardens", although I think the changes being made are generally more positive than those discussed in that talk).<div class="youtube-video message_inline_image"><a data-id="voXVTjwnn-U" href="https://youtu.be/voXVTjwnn-U"><img src="https://i.ytimg.com/vi/voXVTjwnn-U/default.jpg"></a></div></li>
<li>I'm not convinced that we can ever get to a point where there are no roadblocks to contributing (improving rustc compile times is a laudable goal, but it'll only ever improve so much). We should invest in improving things here, I do think that reducing barriers to entry is important, but I don't think investing our limited effort to attract people who prefer using stable rather than <code>x.py</code>, or who want initial compile times to be under ten minutes, is going to lead to far more contributors (I appreciate that this is a simplification of why this is being proposed). We should seek to eliminate roadblocks, but having more mentored issues and active working groups for prospective contributors to participate in will and has gained us far more regular contributors than things like improving the defaults of <code>x.py</code> (which isn't to say that isn't helpful).</li>
</ul>



<a name="210007335"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210007335" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210007335">(Sep 14 2020 at 13:50)</a>:</h4>
<p>I haven't watched the video yet but I'll take a look :)</p>
<blockquote>
<p>We should seek to eliminate roadblocks, but having more mentored issues and active working groups for prospective contributors to participate in will and has gained us far more regular contributors than things like improving the defaults of x.py</p>
</blockquote>
<p>I think these improvements are different in kind. The mentored issues and working groups make new contributors more visible because they're responding to the issues: you see every new person who contributes because of it. The changes in defaults is silent: anyone it helps doesn't ask questions, because it 'just worked' for them. These don't have to be mutually exclusive: improving the defaults makes it easier for new contributors to tackle mentored issues.</p>



<a name="210007583"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210007583" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210007583">(Sep 14 2020 at 13:52)</a>:</h4>
<blockquote>
<p>I don't think investing our limited effort to attract people who [...] want initial compile times to be under ten minutes is going to lead to far more contributors</p>
</blockquote>
<p>Is this really so far-fetched a goal? It's definitely a lot of hard work to make it possible, but this is the number one stumbling block I've seen people run into again and again. I bought a new computer just so it would be <em>possible</em> to compile rustc without waiting half an hour.</p>
<p>I'm not saying this should take precedence over all the other improvements, I realize there's only so much time to go around. But I really do think this would make an <em>enormous</em> improvement in getting new contributors.</p>



<a name="210009562"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210009562" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210009562">(Sep 14 2020 at 14:06)</a>:</h4>
<p>I agree with all you've written. </p>
<p>My primary concern is just that we're utilizing our resources most effectively (though ultimately, contributors can spend their time where they want, so if this is what you want to improve, power to you) and investing in efforts that will yield the most return (from my own experience, it was the experience of the NLL working group that kept me coming back, not a lack of roadblocks; so I value investment in things like that more). </p>
<p>Though, I do think the impact of churn on existing contributors should be weighted slightly more than it is.</p>
<blockquote>
<p>These don't have to be mutually exclusive: improving the defaults makes it easier for new contributors to tackle mentored issues.</p>
</blockquote>
<p>I agree that they don't have to be mutually exclusive.</p>
<blockquote>
<p>I'm not saying this should take precedence over all the other improvements, I realize there's only so much time to go around.</p>
</blockquote>
<p>This was the crux of my point. I could be wrong (I hope I am), but I am skeptical that the contributor who is put off by a long initial compile time would become a regular long-term contributor if it weren't for that.</p>



<a name="210018094"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210018094" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210018094">(Sep 14 2020 at 15:02)</a>:</h4>
<blockquote>
<p>I am skeptical that the contributor who is put off by a long initial compile time would become a regular long-term contributor if it weren't for that.</p>
</blockquote>
<p>Another place this would have a big impact: compile times are <em>the</em> reason rust isn't packaged on openbsd (from <a href="https://marc.info/?l=openbsd-misc&amp;m=151233345723889&amp;w=2">https://marc.info/?l=openbsd-misc&amp;m=151233345723889&amp;w=2</a>):</p>
<blockquote>
<p>In OpenBSD there is a strict requirement that base builds base.<br>
So we cannot replace any base utility, unless the toolchain to build<br>
it is in the base.  Adding such a toolchain would take make build time<br>
from 40 minutes to hours.  I don't see how that would happen.</p>
<p>Such ecosystems come with incredible costs.  For instance, rust cannot<br>
even compile itself on i386 at present time because it exhausts the<br>
address space.</p>
</blockquote>



<a name="210018121"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210018121" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210018121">(Sep 14 2020 at 15:02)</a>:</h4>
<p><span class="user-mention silent" data-user-id="120096">est31</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358/near/210000023">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="125250">Wesley Wiser</span> note that I'm not even sure about the schedule by which to make this change, whether to make it quickly or whether to set it as a long term goal and work towards reducing the number of unstable features first, but keeping those which are deemed valuable, e.g. for testing. Given the responses in this thread, I lean towards the latter.</p>
</blockquote>
<p>My point is that I don't see why this is a compelling goal.</p>



<a name="210018632"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210018632" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210018632">(Sep 14 2020 at 15:05)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116122">simulacrum</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358/near/209995283">said</a>:</p>
<blockquote>
<p>For example, just recently, Niko used the use of crate visibility modifier in the compiler as a point of evaluation - <a href="https://github.com/rust-lang/rust/issues/53120#issuecomment-669529485">https://github.com/rust-lang/rust/issues/53120#issuecomment-669529485</a> - something that would basically not otherwise be readily available. You really do want that sort of organic usage.</p>
</blockquote>
<p>Note that Niko is an exception. There are only two people who are both on the compiler and lang teams, he's one of them. And it's not like won't be able to test crate outside of rustc. One can use experimental projects for that. He has made an entire compiler for experimentation purposes, mostly (I presume) to test other things like IDE friendliness, but it also uses the crate visibility level (and it builds with nightly std): <a href="https://github.com/lark-exploration/lark/search?q=crate_visibility_modifier&amp;unscoped_q=crate_visibility_modifier">https://github.com/lark-exploration/lark/search?q=crate_visibility_modifier&amp;unscoped_q=crate_visibility_modifier</a> </p>
<p>So TLDR I don't think much is lost in testing ability by rustc switching to stable (at least on the master, beta and stable branches)</p>



<a name="210018799"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210018799" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210018799">(Sep 14 2020 at 15:06)</a>:</h4>
<p>But to be clear, I'm also strongly in favor of this:</p>
<blockquote>
<p>The changes in defaults is silent: anyone it helps doesn't ask questions, because it 'just worked' for them. </p>
</blockquote>
<p>Defaults are really important especially for new contributors.</p>



<a name="210018884"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210018884" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210018884">(Sep 14 2020 at 15:07)</a>:</h4>
<p>As a person who recently tried to recruit someone to work on a compiler feature on my behalf:</p>
<ul>
<li>All of them asked about build times and their eyes popped at the idea that the "long build times" of their normal projects were peanuts compared to the glacial ages that rustc uses to build.</li>
<li>All of them complained about the imagined complexity of even a small change to the compiler.</li>
<li>None of them even asked about a mentorship program. They were seemingly unaware that such a program even existed. You need some PR work here it seems.</li>
</ul>
<p>So you <em>do</em> need to keep lowering barrier to entry. Because, and this is a key point so i'll put it in bold, <strong>if every rustacean were to contribute to the compiler just once in their life, that's years and years of work-hours contributed when you add it all up</strong>.</p>



<a name="210019083"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210019083" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210019083">(Sep 14 2020 at 15:08)</a>:</h4>
<p>That's my point. I want to make it more "normal" to contribute to the compiler. Mentorship programs, making <code>cargo test</code> just work, using stable, etc. are all part of that.</p>



<a name="210019169"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210019169" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210019169">(Sep 14 2020 at 15:09)</a>:</h4>
<p>Sorry Est31, that was more at DavidTwco, but then i took too long to type it because i had to get coffee</p>



<a name="210019429"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210019429" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Jonas Schievink  [he/him] <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210019429">(Sep 14 2020 at 15:11)</a>:</h4>
<p>I think we can significantly improve on that without giving up on dogfooding unstable features in rustc</p>



<a name="210019672"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210019672" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210019672">(Sep 14 2020 at 15:12)</a>:</h4>
<p>I want to make sure I'm clear - I do think that improving the overall experience is important. I want to attract contributors that'll stick around and contribute regularly and I think small roadbumps probably have less of an impact there than the way we organize ourselves so that there's a structure for those people to get involved in ongoing efforts and get help.</p>



<a name="210019890"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210019890" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210019890">(Sep 14 2020 at 15:14)</a>:</h4>
<p>I think where we disagree is 'small' roadbumps ;)</p>



<a name="210020420"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210020420" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210020420">(Sep 14 2020 at 15:18)</a>:</h4>
<p>Yeah - I don't even know that we disagree, we just differ on which aspects of the larger problem are most important.</p>



<a name="210020529"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210020529" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210020529">(Sep 14 2020 at 15:19)</a>:</h4>
<p>fortunately we don't have to agree if we can work on both parts of the problem at once :)</p>



<a name="210020549"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210020549" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210020549">(Sep 14 2020 at 15:19)</a>:</h4>
<p>I think you're exactly right <span class="user-mention" data-user-id="232545">@Joshua Nelson</span>. </p>
<p>I do see a lot of value in letting people <code>cargo build</code> or <code>cargo test</code> the compiler if that's what they want to do. It's definitely way more intuitive for a Rust developer than the current system. </p>
<p>What I don't see is why we need to give up unstable features to do it. I use cargo with all my nightly projects. I don't see why rustc has to be different in that regard.</p>



<a name="210020614"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210020614" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210020614">(Sep 14 2020 at 15:19)</a>:</h4>
<p>rust has to build with two different std's for starters</p>



<a name="210020643"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210020643" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210020643">(Sep 14 2020 at 15:20)</a>:</h4>
<p>no other program needs that</p>



<a name="210020772"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210020772" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210020772">(Sep 14 2020 at 15:20)</a>:</h4>
<p>Isn't that just the <code>#[cfg(bootstrap)]</code> stuff though?</p>



<a name="210020893"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210020893" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210020893">(Sep 14 2020 at 15:21)</a>:</h4>
<p><span class="user-mention silent" data-user-id="120096">est31</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358/near/210020614">said</a>:</p>
<blockquote>
<p>rust has to build with two different std's for starters</p>
</blockquote>
<p>this would be true no matter what</p>



<a name="210020964"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210020964" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210020964">(Sep 14 2020 at 15:22)</a>:</h4>
<p>since you have to be able to build with both the beta and stage 1 compiler</p>



<a name="210021029"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210021029" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210021029">(Sep 14 2020 at 15:22)</a>:</h4>
<p>the only thing moving to stable gets you is that nothing would <em>change</em> between the versions of std</p>



<a name="210021034"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210021034" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210021034">(Sep 14 2020 at 15:22)</a>:</h4>
<p>I think there's also a question of expectations - I don't think I would expect the compiler and standard library for the language to have exactly the same infrastructure as every other project, or that there wouldn't be some complexity to different changes - it's a massive project, that does a ton of complicated stuff, why wouldn't that be the case? Putting aside whether we can or cannot change something (and the trade-offs inherent in that), if we set accurate expectations, fewer people might find themselves unable or unwilling to contribute.</p>



<a name="210021084"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210021084" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210021084">(Sep 14 2020 at 15:23)</a>:</h4>
<p><span class="user-mention" data-user-id="232545">@Joshua Nelson</span> yeah but apparently that's much less of an issue, not sure why... there are almost equal number of unstable lang and lib features used by rustc</p>



<a name="210021171"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210021171" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210021171">(Sep 14 2020 at 15:23)</a>:</h4>
<p><span class="user-mention" data-user-id="116107">@davidtwco</span> so you telling me that stable rust can't be used to build large projects?</p>



<a name="210021184"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210021184" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210021184">(Sep 14 2020 at 15:23)</a>:</h4>
<blockquote>
<p>I don't think I would expect the compiler and standard library for the language to have exactly the same infrastructure as every other project<br>
it's a massive project, that does a ton of complicated stuff</p>
</blockquote>
<p>sure, I think x.py has to exist in some form. But I think we should ask how much of the complexity is <em>necessary</em> and how much has just grown organically over time</p>



<a name="210021234"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210021234" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210021234">(Sep 14 2020 at 15:24)</a>:</h4>
<p><span class="user-mention silent" data-user-id="120096">est31</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358/near/210021171">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="116107">davidtwco</span> so you telling me that stable rust can't be used to build large projects?</p>
</blockquote>
<p>let's assume positive intentions :)</p>



<a name="210021259"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210021259" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210021259">(Sep 14 2020 at 15:24)</a>:</h4>
<p><span class="user-mention silent" data-user-id="120096">est31</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358/near/210021171">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="116107">davidtwco</span> so you telling me that stable rust can't be used to build large projects?</p>
</blockquote>
<p>No, I'm telling you that I wouldn't expect every language's compiler and standard library to be built without some sort of special tooling.</p>



<a name="210021274"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210021274" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210021274">(Sep 14 2020 at 15:24)</a>:</h4>
<p><span class="user-mention" data-user-id="232545">@Joshua Nelson</span> yes, please assume them, it was rhetorical question</p>



<a name="210021446"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210021446" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210021446">(Sep 14 2020 at 15:25)</a>:</h4>
<p>Part of improving the contributor experience here could be explaining (and I think good work has been done on this in the rustc-dev-guide) why things are the way they are - that way a new contributor understands why there might be some friction.</p>



<a name="210021537"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210021537" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210021537">(Sep 14 2020 at 15:26)</a>:</h4>
<p>(thereby setting appropriate expectations)</p>



<a name="210021613"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210021613" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210021613">(Sep 14 2020 at 15:26)</a>:</h4>
<p><span class="user-mention" data-user-id="116107">@davidtwco</span> good point. gcc is full of custom gcc-isms as well. rustc isn't the only compiler where this happens.</p>



<a name="210021681"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210021681" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210021681">(Sep 14 2020 at 15:27)</a>:</h4>
<p>(And I consider it a problem there too)</p>



<a name="210021901"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210021901" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210021901">(Sep 14 2020 at 15:28)</a>:</h4>
<p><span class="user-mention" data-user-id="116107">@davidtwco</span> if the compiler and standard library can't work with normal cargo just because they're a large project, sounds like cargo needs to get way better somehow until it <em>can</em> handle them.</p>



<a name="210021931"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210021931" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210021931">(Sep 14 2020 at 15:29)</a>:</h4>
<p><span class="user-mention silent" data-user-id="224471">Lokathor</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358/near/210021901">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="116107">davidtwco</span> if the compiler and standard library can't work with normal cargo just because they're a large project, sounds like cargo needs to get way better somehow until it <em>can</em> handle them.</p>
</blockquote>
<p>x.py is <em>not</em> just a wrapper around cargo</p>



<a name="210021963"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210021963" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210021963">(Sep 14 2020 at 15:29)</a>:</h4>
<p><a href="https://www.reddit.com/r/rust/comments/irhj4o/blog_post_rust_in_2021/g4zwdzt/">https://www.reddit.com/r/rust/comments/irhj4o/blog_post_rust_in_2021/g4zwdzt/</a></p>



<a name="210021991"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210021991" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210021991">(Sep 14 2020 at 15:29)</a>:</h4>
<p>Bootstrapping compilers have needs that 99.999% of the rest of the ecosystem do not. Adding complexity to the standard build tools to accommodate rustc +std is not necessarily a good trade off.</p>



<a name="210022101"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210022101" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210022101">(Sep 14 2020 at 15:30)</a>:</h4>
<p>to get the rustc executable plus building std with it, you don't really need more than -Z build std</p>



<a name="210022112"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210022112" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210022112">(Sep 14 2020 at 15:30)</a>:</h4>
<p>I should have worded my message better - being a large complicated project is why making a simple change might induce complexity, and I wouldn't expect that to be surprising (this was in reference to <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358/near/210018884">your message</a>); requiring non-standard tooling is something that I see as being related to the nature of the project, being the compiler and standard library for the language, which I also wouldn't expect to be surprising.</p>



<a name="210022329"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210022329" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210022329">(Sep 14 2020 at 15:32)</a>:</h4>
<p>the passes beyond the first pass aren't really needed except for testing purposes and maybe some benefit when you have some optimizations or LLVM update that creates better binaries and you want your rustc you ship to users compiled with them</p>



<a name="210022400"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210022400" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210022400">(Sep 14 2020 at 15:33)</a>:</h4>
<p>I personally feel like there's a lot of crossed wires in this discussion. Further up thread, it seems like the goal is to let <code>cd compiler &amp;&amp; cargo test</code> "just work" . That seems great to me!</p>
<p>What I don't see is why we're talking about changing the bootstrap compiler. I further don't see why we're talking about removing uses of unstable features. Even if we use <code>stable</code>, we can still pass <code>RUST_BOOTSTRAP=1</code> and use all the unstable features. </p>
<p>Is there a minimum set of changes we can make to let the <code>cd compiler &amp;&amp; cargo test</code> workflow be possible without changing policy around bootstrapping, use of unstable features or significantly growing the capabilities of cargo?</p>



<a name="210022485"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210022485" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210022485">(Sep 14 2020 at 15:33)</a>:</h4>
<p><span class="user-mention" data-user-id="125250">@Wesley Wiser</span> <code>RUST_BOOTSTRAP</code> is a hack and just because the compiler uses it doesn't make it better</p>



<a name="210022536"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210022536" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210022536">(Sep 14 2020 at 15:34)</a>:</h4>
<p>I get why it's used in <code>library/</code></p>



<a name="210022565"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210022565" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210022565">(Sep 14 2020 at 15:34)</a>:</h4>
<p><span class="user-mention" data-user-id="120096">@est31</span> Ok but if you try to change everything at once, you're not going to get anything done.</p>



<a name="210022630"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210022630" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210022630">(Sep 14 2020 at 15:34)</a>:</h4>
<p>There's nothing stopping us from moving away from unstable features or to a stable bootstrap compiler after we start using cargo without the <code>x.py</code> wrapper.</p>



<a name="210022668"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210022668" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210022668">(Sep 14 2020 at 15:35)</a>:</h4>
<p><span class="user-mention silent" data-user-id="125250">Wesley Wiser</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358/near/210022630">said</a>:</p>
<blockquote>
<p>There's nothing stopping us from moving away from unstable features or to a stable bootstrap compiler after we start using cargo without the <code>x.py</code> wrapper.</p>
</blockquote>
<p>(I'm still not convinced this is possible in general, maybe for stage1 builds only)</p>



<a name="210022728"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210022728" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210022728">(Sep 14 2020 at 15:35)</a>:</h4>
<p>Sure, what I meant was "moving to cargo does not make the problem worse" :)</p>



<a name="210022785"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210022785" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210022785">(Sep 14 2020 at 15:36)</a>:</h4>
<p><span class="user-mention" data-user-id="125250">@Wesley Wiser</span> sure, sounds good. As said above I don't really care if it's a short term or long term schedule. Ultimately, even if this MCP will be rejected maybe in 3 or 4 years it might happen anyways.</p>



<a name="210022949"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210022949" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210022949">(Sep 14 2020 at 15:37)</a>:</h4>
<p>The trend goes that way of the compiler using less and less compiler-special things and adopting their standard alternatives. RUSTC_BOOTSTRAP is a compiler-special thing :).</p>



<a name="210023182"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210023182" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210023182">(Sep 14 2020 at 15:39)</a>:</h4>
<p>The compiler is not a particularly unique program, so in the sense that eventually we'll probably not have major language features that it wants to use that aren't stabilized, yes of course it'll eventually be stable. But I have not yet been convinced that this is a goal we should strive to accelerate progress towards by changing the compiler (e.g., removing unstable feature use).</p>



<a name="210023611"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210023611" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210023611">(Sep 14 2020 at 15:43)</a>:</h4>
<p>What I am not clear on is whether <span class="user-mention" data-user-id="120096">@est31</span> thinks we <em>should</em> accelerate by changing the compiler. I think the answer is yes, though.</p>



<a name="210024187"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210024187" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210024187">(Sep 14 2020 at 15:47)</a>:</h4>
<p>Yes, ideally unstable features used by the compiler start getting tracked and removed one by one. If there's no consensus for that, then that's sad, but I guess I'll have to live with it.</p>
<p>Weaker forms of the proposal could include just checking all the unstable features currently in use and wondering if they pull their weight, and only remove those which don't. e.g. personally I think that this would be clearer if it were just a wrapper over <code>Vec</code>: <a href="https://github.com/rust-lang/rust/blob/master/compiler/rustc_arena/src/lib.rs#L53">https://github.com/rust-lang/rust/blob/master/compiler/rustc_arena/src/lib.rs#L53</a></p>



<a name="210024244"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210024244" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210024244">(Sep 14 2020 at 15:47)</a>:</h4>
<p>Basically an one time sweep over all unstable features</p>



<a name="210024500"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210024500" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210024500">(Sep 14 2020 at 15:49)</a>:</h4>
<p>Every other serious rust project tracks what keeps it on Nightly and usually tries to move to Stable when possible. It's totally fair for the <code>rustc</code> to hold itself to the same standard.</p>



<a name="210024516"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210024516" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210024516">(Sep 14 2020 at 15:49)</a>:</h4>
<p>One challenge is that it's generally hard to determine the schedule of some feature's stabilization. Some might get stabilized soon, others not so soon. So that shouldn't be a component in that sweep.</p>



<a name="210025588"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210025588" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210025588">(Sep 14 2020 at 15:56)</a>:</h4>
<p>As in: keeping features which have tons of discussion behind them but don't trend towards stabilization alone for now, not removing their use from the compiler. Example would be the crate visibility level or box syntax.</p>



<a name="210025860"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210025860" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210025860">(Sep 14 2020 at 15:58)</a>:</h4>
<p>To me it feels like the compiler is in a unique place due to being the one project in Rust that never suffers from nightly breakage, which means that using nightly features has less of the "it won't build" downside that other projects may experience.</p>
<p>I don't think the compiler should go out of its way to use unstable features, but if it makes sense to do so then there are real benefits, as it gives us more experience with that feature in a fairly large project setting, which can be useful.</p>



<a name="210025941"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210025941" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210025941">(Sep 14 2020 at 15:59)</a>:</h4>
<p>Lack of obvious overlap with lang team is not really too important -- compiler team members frequently contribute to lang team discussions around stabilization, directly or indirectly.</p>



<a name="210026036"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210026036" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210026036">(Sep 14 2020 at 15:59)</a>:</h4>
<p><span class="user-mention silent" data-user-id="224471">Lokathor</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358/near/210024500">said</a>:</p>
<blockquote>
<p>Every other serious rust project tracks what keeps it on Nightly and usually tries to move to Stable when possible. It's totally fair for the <code>rustc</code> to hold itself to the same standard.</p>
</blockquote>
<p>I don't find this argument compelling; that "standard" exists for sensible reasons:</p>
<ol>
<li>Lots of people want to use stable (because it's stable).</li>
<li>As a crate author, I want people to use my crate.</li>
<li>I can therefore avoid using unstable features so that more people use my crate.</li>
</ol>
<p>rustc will be used regardless of whether it uses nightly features, there's no reason to hold itself to that same "standard". If the compiler team choose to make a crate from the compiler public then they might also choose to remove nightly feature use from that crate, but that's a decision for that specific case.</p>



<a name="210026221"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210026221" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210026221">(Sep 14 2020 at 16:00)</a>:</h4>
<p><span class="user-mention" data-user-id="116122">@simulacrum</span>  Features are added to the language usually because they improve <em>something</em>, so there will be usually a benefit in the usage of a feature. The question is: should the compiler get those features before everyone else does</p>



<a name="210026529"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210026529" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210026529">(Sep 14 2020 at 16:02)</a>:</h4>
<p>I am not sure I follow that train of thought. If I understand correctly, you mean to say that we should prevent unstable feature usage in the compiler to encourage features to stabilize faster? That seems... odd to me</p>



<a name="210026532"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210026532" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210026532">(Sep 14 2020 at 16:02)</a>:</h4>
<p><span class="user-mention silent" data-user-id="120096">est31</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358/near/210026221">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="116122">simulacrum</span>  Features are added to the language usually because they improve <em>something</em>, so there will be usually a benefit in the usage of a feature. The question is: should the compiler get those features before everyone else does</p>
</blockquote>
<p>What difference does it make? If the compiler can benefit from it, then that's great, why wouldn't you want the compiler to benefit from it? I don't think there has to be some standard of fairness whereby the compiler cannot use some features unless the ecosystem them at the same time.</p>



<a name="210026726"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210026726" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210026726">(Sep 14 2020 at 16:03)</a>:</h4>
<p>And the compiler does get the features at the same time as everyone else - that's what nightly is for.</p>



<a name="210026839"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210026839" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210026839">(Sep 14 2020 at 16:04)</a>:</h4>
<p><span class="user-mention" data-user-id="116122">@simulacrum</span></p>
<blockquote>
<p>being the one project in Rust that never suffers from nightly breakage, </p>
</blockquote>
<p>How does the compiler not suffer from nightly breakage? I can't check out an old version of rustc and compile it with my new beta rustc. Have to use that single n-1 version.</p>



<a name="210026972"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210026972" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210026972">(Sep 14 2020 at 16:05)</a>:</h4>
<p><span class="user-mention silent" data-user-id="120096">est31</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358/near/210026839">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="116122">simulacrum</span></p>
<blockquote>
<p>being the one project in Rust that never suffers from nightly breakage, </p>
</blockquote>
<p>How does the compiler not suffer from nightly breakage? I can't check out an old version of rustc and compile it with my new beta rustc. Have to use that single n-1 version.</p>
</blockquote>
<p>If I change a nightly feature in such a way that it would break compatibility at the same time, I necessarily need to update the compiler's usage of that feature so that rustc continues to compile.</p>



<a name="210027021"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210027021" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210027021">(Sep 14 2020 at 16:05)</a>:</h4>
<p>That's an argument for not only not using unstable features, but also having a less-aggressive MSRV than "latest beta" (which is loosely what we have today).</p>



<a name="210027052"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210027052" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210027052">(Sep 14 2020 at 16:05)</a>:</h4>
<p>Which -- well, I don't think we should bite off both at the same time.</p>



<a name="210027146"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210027146" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210027146">(Sep 14 2020 at 16:06)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116107">davidtwco</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358/near/210026532">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="120096">est31</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358/near/210026221">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="116122">simulacrum</span>  Features are added to the language usually because they improve <em>something</em>, so there will be usually a benefit in the usage of a feature. The question is: should the compiler get those features before everyone else does</p>
</blockquote>
<p>What difference does it make? If the compiler can benefit from it, then that's great, why wouldn't you want the compiler to benefit from it? I don't think there has to be some standard of fairness whereby the compiler cannot use some features unless the ecosystem them at the same time.</p>
</blockquote>
<p>This difference creates churn by the ecosystem, e.g. when people want to use their tooling used on stable compilers, in knowledge of the unstable features, and also when the compiler wants the ecosystem to use its crates.</p>



<a name="210027354"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210027354" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210027354">(Sep 14 2020 at 16:08)</a>:</h4>
<p>I feel like we're going around in circles</p>



<a name="210027385"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210027385" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210027385">(Sep 14 2020 at 16:08)</a>:</h4>
<p>I think we shouldn't bring ecosystem use of compiler crates into this discussion, because no such crates exist today</p>



<a name="210027392"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210027392" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210027392">(Sep 14 2020 at 16:08)</a>:</h4>
<p>When the compiler team wants to release part of the compiler as a crate, the compiler team can choose to prohibit use of unstable features in that crate - it doesn't require that the rest of the compiler, which is unlikely to have any sort of stable inferface, refrain from using those features.</p>



<a name="210027456"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210027456" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210027456">(Sep 14 2020 at 16:08)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116122">simulacrum</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358/near/210027021">said</a>:</p>
<blockquote>
<p>That's an argument for not only not using unstable features, but also having a less-aggressive MSRV than "latest beta" (which is loosely what we have today).</p>
</blockquote>
<p>Sorry I should have been clearer. You can't check out an old version of rustc's <em>source code</em> and compile it with the new beta rustc <em>binary stage0</em>. So it's the opposite situation: old source code, new compiler. Means that e.g. you can't compile 1.31 with the 1.46 stable compiler. It needs 1.30 rustc for that. So you don't have a situation where each compiler gets more capable of compiling older compiler versions, but one where it stays constant. Arguably that's more of a philsophical benefit.</p>



<a name="210028211"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210028211" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210028211">(Sep 14 2020 at 16:14)</a>:</h4>
<p>Yeah, I agree that it feels like we're going in circles here -- I think fundamentally I at least assign different valuations to the pros and cons of this proposal, though I think there's also some disagreement about what exactly those are.</p>
<p>It would probably help if the proposal was updated to list not only the benefits of such a change but negatives too -- but realistically, I wouldn't ask that someone does that because I would likely still "vote" against it :)</p>



<a name="210053431"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210053431" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> oliver <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210053431">(Sep 14 2020 at 19:42)</a>:</h4>
<p><span class="user-mention silent" data-user-id="120096">est31</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358/near/209989398">said</a>:</p>
<blockquote>
<p>FYI I just made a feature use count, there are 61 features in use in total, with 30 lang features and 31 lib features.<br>
In total, there are 154 unstable lang features available and 261 lib features (sum is 415).</p>
</blockquote>
<p>I'm interested in how one derives this information.</p>



<a name="210057031"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210057031" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210057031">(Sep 14 2020 at 20:13)</a>:</h4>
<p><span class="user-mention" data-user-id="281739">@Oliver</span> I did this to obtain the list of used features:</p>
<div class="codehilite"><pre><span></span><code>rg &#39;^#!\[feature&#39; compiler/ -N --no-heading | grep -v rustc_error_codes | sed &#39;s/.*rs://;s/\].*/]/;s/.*(//;s/).//&#39; | sort | uniq -c | sort -nr
</code></pre></div>


<p>Then I made a manual join with output from <code>./x.py test tidy -v</code> which outputs a list of feature gates with info on whether they are lib or lang. Then I saved to a file and grepped for lib and lang to get the counts :).</p>
<p>To get the total numbers, I used the unstable book. For lang features, the beta book, for lib features the nightly book (as beta rustc is used and nightly std).</p>



<a name="210223261"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210223261" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Charles Lew <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210223261">(Sep 16 2020 at 05:23)</a>:</h4>
<p>Personally I feel this is more directional than a single major change(I don't think it is possible to finish such a change in short term). </p>
<p>It's nice to taking rustc as an example and gather data on what unstable features is it using and why. Maybe put them into categories to form a document and submit them to <code>t-lang</code> and <code>t-libs</code> to take those into consideration, and i think it would be valuable.</p>
<p>It's possible to eliminate or move away from some of the features involved if it was decided some of the features are not on the "track" of future language evolvement. I guess such plans might be made on top of the previous said document?</p>



<a name="210227652"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210227652" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210227652">(Sep 16 2020 at 07:03)</a>:</h4>
<p>Yes, my main goal with the MCP was to establish that this is wanted in the first place, that PRs to replace unstable features by stable ones are welcome, etc. As you put it, directional. Once that is settled, I'd have done something similar to what you describe, categorizing features, etc.</p>



<a name="210228492"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210228492" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210228492">(Sep 16 2020 at 07:15)</a>:</h4>
<p>I wondered about doing an RFC instead or just opening an issue. As I knew there were reservations by some folks at least I didn't want to just start the work on it. A little bit surprised how much staying on nightly is a consensus among compiler devs</p>



<a name="210244282"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210244282" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210244282">(Sep 16 2020 at 10:35)</a>:</h4>
<p>As an outsider, I'm amused that one side of the argument boils down to 61 instances of "I really just want to use <code>bool::then_some</code>" and the other side is "I really want to not have to use the word bootstrap 10 times when explaining rustc development."</p>



<a name="210244821"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210244821" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210244821">(Sep 16 2020 at 10:42)</a>:</h4>
<p>It seems like the MCP proposes a direction for people who want to do the work to know that this work is supported as a goal, assuming they actually do the work. In that sense, disagreeing with the goal should require a reason other than "I want to focus on something else". Are the people who disagree actively saying that they want to prevent all PR's that remove uses of unstable features?</p>



<a name="210245653"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210245653" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210245653">(Sep 16 2020 at 10:53)</a>:</h4>
<p>I think there are two arguments being made:</p>
<ul>
<li>I went off-topic by suggesting that our efforts might be better deployed in other efforts to attract new contributors (this topic wasn't the place for that discussion and I was speaking about more than just this specific MCP). You are correct that shouldn't be an argument against an MCP.</li>
<li>Some have argued that there's a value in being able to dogfood unstable features in the compiler and standard library and that the arguments in favour of removing uses of unstable features aren't as compelling. I think that this is a perfectly valid argument against going ahead with this major change.</li>
</ul>



<a name="210246137"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210246137" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> davidtwco <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210246137">(Sep 16 2020 at 11:00)</a>:</h4>
<p>That isn't to say there won't be any circumstance whereby uses of an unstable feature should be removed - I don't think anyone's arguing that - just that there are arguments against the direction of "removing <em>all</em> uses of unstable features".</p>



<a name="210276340"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210276340" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210276340">(Sep 16 2020 at 15:10)</a>:</h4>
<p>I have a compromise proposal that should address the major concern while allowing progress. Given that the primary objection to removing their use is to allow people to gain experience on the path to stabilizing a feature, in the <code>compiler/</code>, it would seem reasonable for people desiring such experience to explicitly track such. So, I'd propose:</p>
<ul>
<li>Bike shed a way for someone to 'claim', in good faith, a feature's use in the compiler for testing explicitly. This would be a statement that they think the feature is valuable to gain testing experience and that the feature is being progressed to a resolution actively (i.e. it's going to be stabilized if successful or changed/removed if unsuccessful). Obviously multiple people could claim it. Claims 'expire' in some way and have to be reconfirmed, which ensures that they are actively being tested and the experience is being accounted for. It only seems fair that people who have this perspective should be transparent about the benefits of it.</li>
<li>People who are in favor of removing uses of unstable features may submit PR's which remove uses of unclaimed features. Ideally, the bikeshedded mechanism above would allow someone to state an interest in removing a specific feature, much like the tracking issue used in nushell.</li>
<li>Alternatively, people who are in favor of removing uses of unstable features can work toward stabilizing them, whether claimed or not.</li>
</ul>
<p>It seems like this would have the natural outcome that the perspective with the most passion/effort will win out over time and if there is a time when there are no remaining unstable features, a proposal to make that permanent could be made.</p>



<a name="210280033"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210280033" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> lcnr <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210280033">(Sep 16 2020 at 15:36)</a>:</h4>
<p>It seems to me that the proposal by <span class="user-mention" data-user-id="336395">@Ahmed Charles</span> does not allow us to easily use the beta std when compiling rustc, which is the only mentioned benefit of this proposal I personally value enough to spend time on.</p>
<p>Muting this now, as I have already spend far too much time with this</p>



<a name="210327672"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210327672" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210327672">(Sep 16 2020 at 22:24)</a>:</h4>
<p>I think that a minimal agreement can be had that the compiler should not rely on "perma unstable" features?</p>
<p>Everything that is unstable should be on a path to stabilization or be removed and replaced.</p>
<p>This leads us to careful tracking of nightly feature usage and also could potentially lead to being able to build with beta.</p>



<a name="210327987"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210327987" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210327987">(Sep 16 2020 at 22:28)</a>:</h4>
<p>I.. hesitate to say yes. For example, the old assembly syntax was obviously permanently unstable, but use of it would've imo been fine</p>



<a name="210328002"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210328002" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210328002">(Sep 16 2020 at 22:28)</a>:</h4>
<p>(Also, e.g., intrinsics are likely perma-unstable in their current form)</p>



<a name="210328028"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210328028" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210328028">(Sep 16 2020 at 22:28)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116122">simulacrum</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358/near/210328002">said</a>:</p>
<blockquote>
<p>(Also, e.g., intrinsics are likely perma-unstable in their current form)</p>
</blockquote>
<p>True, though wrappers around some of them can be stabilized, and have been stabilized.</p>



<a name="210328038"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210328038" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210328038">(Sep 16 2020 at 22:29)</a>:</h4>
<p>But yeah, in general I don't think std should need to avoid all nightly-only features.</p>



<a name="210328335"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210328335" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210328335">(Sep 16 2020 at 22:32)</a>:</h4>
<p>(that goes for std and rustc, btw)</p>



<a name="210328378"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210328378" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210328378">(Sep 16 2020 at 22:33)</a>:</h4>
<p>But llvm_asm having no path to stability is what got us to actually get a move on and design a much better asm system and now it does have a path to stability. That's a win for the language, the project, and the ecosystem.</p>



<a name="210328502"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210328502" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210328502">(Sep 16 2020 at 22:34)</a>:</h4>
<p>I don't mean "ban all nightly tomorrow", but if things are useful enough to be used by the compiler, to people <em>outside</em> the compiler, it always feels very bad to see that useful thing and be told "oh you'll never get that, sorry"</p>



<a name="210328619"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210328619" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210328619">(Sep 16 2020 at 22:36)</a>:</h4>
<p>So maybe there's maybe some small portion that really is just implementation detail that won't become stable, but we should take care to keep that small and to try to move all useful things into a stable form.</p>



<a name="210328759"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210328759" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210328759">(Sep 16 2020 at 22:38)</a>:</h4>
<p>I think that's always true, generally speaking</p>



<a name="210328769"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210328769" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210328769">(Sep 16 2020 at 22:38)</a>:</h4>
<p>but it's not really a reason not to use things</p>



<a name="210328796"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210328796" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210328796">(Sep 16 2020 at 22:38)</a>:</h4>
<p>it's a reason to say "things we need are <em>almost certainly</em> things others want, so we should consider stabilization eventually, in one form or another"</p>



<a name="210329090"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210329090" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210329090">(Sep 16 2020 at 22:42)</a>:</h4>
<p>Right, I don't personally want to prevent Nightly usage. I do think that a reasonable time period of Nightly experimentation and testing gives us a better end design.</p>
<p>I just want to keep the "perma unstable" pile as small as possible.</p>



<a name="210329349"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210329349" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210329349">(Sep 16 2020 at 22:47)</a>:</h4>
<p><span class="user-mention" data-user-id="224471">@Lokathor</span> That I would <em>completely</em> agree with.</p>



<a name="210329360"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210329360" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210329360">(Sep 16 2020 at 22:47)</a>:</h4>
<p>I don't think we should prevent std from using nightly features, in general.</p>



<a name="210329376"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210329376" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210329376">(Sep 16 2020 at 22:47)</a>:</h4>
<p>But we should absolutely take usage in std as a suggestion that the feature is useful, and that it <em>probably</em> shouldn't be perma-unstable, unless there's a very good reason for it.</p>



<a name="210330362"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210330362" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210330362">(Sep 16 2020 at 23:00)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116122">simulacrum</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358/near/210328002">said</a>:</p>
<blockquote>
<p>(Also, e.g., intrinsics are likely perma-unstable in their current form)</p>
</blockquote>
<p>Indeed, but if the compiler would use them it'd be pretty weird. It should instead use the stable wrappers that std provides. My proposal limits itself to <code>compiler/</code> crates for that reason.</p>



<a name="210330915"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210330915" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210330915">(Sep 16 2020 at 23:08)</a>:</h4>
<p>I think that's somewhat true, yeah.</p>



<a name="210330921"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210330921" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210330921">(Sep 16 2020 at 23:08)</a>:</h4>
<p>I certainly can't think of a reason for the compiler to directly use an intrinsic in most cases.</p>



<a name="210339773"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210339773" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210339773">(Sep 17 2020 at 01:40)</a>:</h4>
<p>Regarding the "perma unstable" features proposal: I don't think it would help much, because most features have stabilization scheduled <em>somewhere</em> or at least it isn't certain.</p>



<a name="210339812"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210339812" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210339812">(Sep 17 2020 at 01:41)</a>:</h4>
<p>But in general the idea is good to separate features. If the top N used/important features are selected and put onto a whitelist, it would already be progress</p>



<a name="210339867"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210339867" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210339867">(Sep 17 2020 at 01:42)</a>:</h4>
<p>But most statements here have made me quite sad, basically dismissing the idea of it being progress or useful in the first place</p>



<a name="210340139"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210340139" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210340139">(Sep 17 2020 at 01:49)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116122">simulacrum</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358/near/210328335">said</a>:</p>
<blockquote>
<p>(that goes for std and rustc, btw)</p>
</blockquote>
<p>Just curious, why does the compiler specifically require access to unstable intrinsics or assembly syntax? Honestly asking.</p>



<a name="210340242"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210340242" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210340242">(Sep 17 2020 at 01:51)</a>:</h4>
<p><span class="user-mention silent" data-user-id="239881">Josh Triplett</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358/near/210329360">said</a>:</p>
<blockquote>
<p>I don't think we should prevent std from using nightly features, in general.</p>
</blockquote>
<p>The title of this topic says that it's about <code>compiler/</code> not <code>std</code>. Was there a suggestion that nightly features be forbidden in <code>std</code>?</p>



<a name="210340243"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210340243" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210340243">(Sep 17 2020 at 01:51)</a>:</h4>
<p>But yeah, different valuations of advantages/disadvantages I guess. I personally think there is only little benefit in using <code>then_some</code>, but it seems to be a big deal for others, while usage of <code>RUSTC_BOOTSTRAP</code> in places where it doesn't belong is a big deal for me.</p>



<a name="210340370"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210340370" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210340370">(Sep 17 2020 at 01:54)</a>:</h4>
<p>Apparently replying before reading everything has downsides. Sorry about that.</p>



<a name="210340378"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210340378" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210340378">(Sep 17 2020 at 01:54)</a>:</h4>
<p>I'm not saying those are the best features to call out, but assembly for example would've been useful in whatever form for some of the performance work we're working on (fine-grained instruction counting). Today, we'd use the new assembly, but if we were having this conversation 1 year ago I'd still feel like using the old assembly would've been perfectly reasonable.</p>
<p>It is harder to argue for intrinsics -- they're sort of "very wide" in terms of what they could do -- but even there, I could imagine us adding specialized things that we want to try out ad-hoc in some places.</p>



<a name="210340448"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210340448" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210340448">(Sep 17 2020 at 01:56)</a>:</h4>
<p>I think the problem is that for something like then_some, you'd probably see no major pushback. If rustc was "mostly stable" today and had a few libs features, I could see us saying that there's real value in pushing that to completion and having a fully stable rustc. But that's not where we're at -- and most feature use in rustc is either library (but long-termish unstable) or language, I think.</p>



<a name="210340543"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210340543" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210340543">(Sep 17 2020 at 01:58)</a>:</h4>
<p>yeah in 2-3 years or so when/if min_specialization and never type are stable, the situation will be different and lean further towards stable Rust</p>



<a name="210340546"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210340546" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210340546">(Sep 17 2020 at 01:58)</a>:</h4>
<p>I'm pretty sure that's why I suggested allowing interested parties to remove uses of unstable features for which there is no active party pursuing stabilization or an alternative.</p>



<a name="210340661"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210340661" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210340661">(Sep 17 2020 at 02:00)</a>:</h4>
<p>But the core issue is inertia then: as rustc is not "mostly stable", PRs to remove unstable features are not welcome, and thus rustc is not "mostly stable" :-)</p>



<a name="210340675"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210340675" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210340675">(Sep 17 2020 at 02:00)</a>:</h4>
<p>Exactly.</p>



<a name="210340774"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210340774" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210340774">(Sep 17 2020 at 02:02)</a>:</h4>
<p>You can't argue that the big reason why moving to stable is the number of unstable features currently in use when you keep adding more and prevent people from removing them. That's disingenuous. In that case, the reason isn't "we're not close to compiling on stable", the reason is, "we don't want to compile on stable".</p>



<a name="210340801"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210340801" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210340801">(Sep 17 2020 at 02:03)</a>:</h4>
<p>I think I would expect that any change -- whether adding or removing unstable features -- needs to be considered on its merits. I believe that today's Rust is more expressive, more powerful, and better suited for rustc when in the unstable subset. In 2-3 years -- I fully agree that we can even <em>hope</em> that will slowly not be the case.</p>



<a name="210340822"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210340822" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210340822">(Sep 17 2020 at 02:03)</a>:</h4>
<p>And at least for me "not using an unstable feature" is not an improvement, really, for the compiler's codebase -- the argument needs to go further than that.</p>



<a name="210340873"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210340873" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210340873">(Sep 17 2020 at 02:04)</a>:</h4>
<p>i.e., I don't think there's unstable feature use <em>for the sake of unstable feature use</em> in the compiler today</p>



<a name="210340874"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210340874" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210340874">(Sep 17 2020 at 02:04)</a>:</h4>
<p>That's never going to be the case. The next unstable feature will always be more expressive, otherwise it wouldn't get added to the language.</p>



<a name="210340909"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210340909" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210340909">(Sep 17 2020 at 02:05)</a>:</h4>
<p>People don't seriously propose features that make the language worse, so simply saying that "well, today unstable is more expressive, so we should use it" is the same as saying the same thing without 'today'.</p>



<a name="210340911"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210340911" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210340911">(Sep 17 2020 at 02:05)</a>:</h4>
<p>Seems like an argument to keep the unstable subset, then -- right? Like, I'm not sure that's always going to be true, rustc isn't after all desperately searching for new unstable features</p>



<a name="210340962"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210340962" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210340962">(Sep 17 2020 at 02:06)</a>:</h4>
<p>That's an argument that you have to pick, stable or unstable. Today isn't special. :P</p>



<a name="210340971"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210340971" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210340971">(Sep 17 2020 at 02:06)</a>:</h4>
<p>It's not an argument for unstable, it's an argument that tomorrow isn't going to change the math.</p>



<a name="210340972"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210340972" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210340972">(Sep 17 2020 at 02:06)</a>:</h4>
<p>My argument is that I don't see why that distinction matters that much <em>for rustc</em> -- I can definitely see it mattering for crates on <a href="http://crates.io">crates.io</a> or in general</p>



<a name="210340984"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210340984" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210340984">(Sep 17 2020 at 02:07)</a>:</h4>
<p>And if it doesn't matter, then obviously I want rustc to be using the most expressive, easy to read, etc. feature set</p>



<a name="210340991"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210340991" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210340991">(Sep 17 2020 at 02:07)</a>:</h4>
<p>The distinction matters little for rustc because in order to use rust, you need to use rustc and it is delivered as binary to users</p>



<a name="210341000"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341000" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341000">(Sep 17 2020 at 02:07)</a>:</h4>
<p>any extension of the model isn't possible (like choosing select rustc crates for your own project)</p>



<a name="210341049"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341049" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341049">(Sep 17 2020 at 02:08)</a>:</h4>
<p>as I've (and other's) have mentioned before, the calculus would change for me <em>if</em> we had such crates</p>



<a name="210341055"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341055" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341055">(Sep 17 2020 at 02:08)</a>:</h4>
<p>I personally want rustc to use the feature set that results in it being the most stable and reliable.</p>



<a name="210341056"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341056" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341056">(Sep 17 2020 at 02:08)</a>:</h4>
<p>and indeed, e.g. rust-analyzer and the librarification effort has moved parts of the compiler closer to stable with that goal</p>



<a name="210341057"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341057" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341057">(Sep 17 2020 at 02:08)</a>:</h4>
<p>You can't for example make your own library-specific set of clippy lints (large part of clippy lints is: "you could use  this feature of the std library")</p>



<a name="210341073"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341073" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341073">(Sep 17 2020 at 02:09)</a>:</h4>
<p>but it would still change <em>for those crates</em>, not as a general decision</p>



<a name="210341135"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341135" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341135">(Sep 17 2020 at 02:10)</a>:</h4>
<p>If the next milestone is "get clippy onto stable", I'd be happy</p>



<a name="210341144"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341144" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341144">(Sep 17 2020 at 02:10)</a>:</h4>
<p>If that's the resolution of this MCP :)</p>



<a name="210341146"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341146" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341146">(Sep 17 2020 at 02:10)</a>:</h4>
<p>IMO that's basically not even a long-term goal at this point, we need to stabilize way too much</p>



<a name="210341159"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341159" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341159">(Sep 17 2020 at 02:11)</a>:</h4>
<p>like clippy on stable and the compiler on stable are equivalent in my eyes, or largely so, because clippy depends on the compiler</p>



<a name="210341168"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341168" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341168">(Sep 17 2020 at 02:11)</a>:</h4>
<p>Yeah they are pretty much close</p>



<a name="210341173"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341173" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341173">(Sep 17 2020 at 02:11)</a>:</h4>
<p>I mostly want it to compile on stable because that would mean I could build rustc in a third the time. Granted, there are other reasons, but I suspect those would be viewed poorly, even though I intend them genuinely.</p>



<a name="210341236"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341236" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341236">(Sep 17 2020 at 02:12)</a>:</h4>
<p>I don't understand how rustc compiling on stable speeds up your builds by 3x -- at most you'd avoid the minute or two of a single std build</p>



<a name="210341263"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341263" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341263">(Sep 17 2020 at 02:13)</a>:</h4>
<p>The last time I compiled rustc was years ago, but removing the concept of stages seems like it would be a huge win.</p>



<a name="210341265"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341265" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341265">(Sep 17 2020 at 02:13)</a>:</h4>
<p>Yeah build time benefit would be minor</p>



<a name="210341269"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341269" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341269">(Sep 17 2020 at 02:13)</a>:</h4>
<p>stages have nothing to do with this</p>



<a name="210341283"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341283" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341283">(Sep 17 2020 at 02:13)</a>:</h4>
<p>A rustc built on stable wouldn't require multiple stages.</p>



<a name="210341291"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341291" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341291">(Sep 17 2020 at 02:13)</a>:</h4>
<p>...no, it still would for sure</p>



<a name="210341293"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341293" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341293">(Sep 17 2020 at 02:13)</a>:</h4>
<p>So, I fail to see why that's not appealing.</p>



<a name="210341331"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341331" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341331">(Sep 17 2020 at 02:14)</a>:</h4>
<p>Clang doesn't require stages does it?</p>



<a name="210341342"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341342" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341342">(Sep 17 2020 at 02:14)</a>:</h4>
<p>You can make rustc not require stages as well</p>



<a name="210341346"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341346" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341346">(Sep 17 2020 at 02:14)</a>:</h4>
<p>Mostly they exist for testing purposes</p>



<a name="210341347"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341347" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341347">(Sep 17 2020 at 02:14)</a>:</h4>
<p>I.e. it is possible to write a production compiler that can bootstrap without having people always bootstrap.</p>



<a name="210341355"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341355" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341355">(Sep 17 2020 at 02:15)</a>:</h4>
<p>It has nothing to do with rustc being on stable</p>



<a name="210341358"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341358" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341358">(Sep 17 2020 at 02:15)</a>:</h4>
<p>like, a stage1 rustc build (which is what a no-stage clang build gives you) is fully functional</p>



<a name="210341364"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341364" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341364">(Sep 17 2020 at 02:15)</a>:</h4>
<p>and is indeed what 99% of rustc developers use</p>



<a name="210341371"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341371" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341371">(Sep 17 2020 at 02:15)</a>:</h4>
<p>Isn't it the case that currently, I have to build multiple stages just to know that I didn't break bootstrap?</p>



<a name="210341374"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341374" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341374">(Sep 17 2020 at 02:15)</a>:</h4>
<p>I mean that's true of clang too?</p>



<a name="210341377"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341377" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341377">(Sep 17 2020 at 02:16)</a>:</h4>
<p>(I don't see how that's not true of <em>any</em> compiler)</p>



<a name="210341416"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341416" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341416">(Sep 17 2020 at 02:16)</a>:</h4>
<p><span class="user-mention" data-user-id="336395">@Ahmed Charles</span> yes you need to run tests in order to be able to check whether tests run :)</p>



<a name="210341432"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341432" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341432">(Sep 17 2020 at 02:16)</a>:</h4>
<p>It's not, because clang doesn't make use of the most recent features, therefore, if you can build it with itself, you can always bootstrap.</p>



<a name="210341438"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341438" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341438">(Sep 17 2020 at 02:17)</a>:</h4>
<p>that's not testing bootstrapping</p>



<a name="210341441"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341441" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341441">(Sep 17 2020 at 02:17)</a>:</h4>
<p>or at least, not really</p>



<a name="210341447"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341447" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341447">(Sep 17 2020 at 02:17)</a>:</h4>
<p>That's my point though.</p>



<a name="210341456"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341456" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341456">(Sep 17 2020 at 02:17)</a>:</h4>
<p>There is no <code>#define BOOTSTRAP</code> in clang.</p>



<a name="210341520"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341520" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341520">(Sep 17 2020 at 02:18)</a>:</h4>
<p>Breaking bootstrap is possible, for example, a miscompilation could. But forgetting to place <code>#[cfg(bootstrap)]</code> in the right place isn't possible.</p>



<a name="210341541"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341541" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341541">(Sep 17 2020 at 02:19)</a>:</h4>
<p><span class="user-mention" data-user-id="336395">@Ahmed Charles</span> maybe you confuse things? <code>#[cfg(bootstrap)]</code> is present in rustc right now, and if rustc were on stable, one wouldn't need it any more. That'S an advantage of rustc being on stable. But it has nothing to do with the fact that bootstrap <em>exists</em> in the first place</p>



<a name="210341542"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341542" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341542">(Sep 17 2020 at 02:19)</a>:</h4>
<p>I presume that C++'s standard libraries either use cfg(bootstrap) or feature detection of the compiler building them</p>



<a name="210341558"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341558" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341558">(Sep 17 2020 at 02:19)</a>:</h4>
<p>The std library does, but clang as a compiler doesn't.</p>



<a name="210341609"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341609" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341609">(Sep 17 2020 at 02:20)</a>:</h4>
<p>rust std = libc++, neither of which I'm talking about.</p>



<a name="210341611"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341611" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341611">(Sep 17 2020 at 02:20)</a>:</h4>
<p>rustc basically doesn't either</p>



<a name="210341613"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341613" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341613">(Sep 17 2020 at 02:20)</a>:</h4>
<p>(and in any case I don't see how it's relevant)</p>



<a name="210341622"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341622" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341622">(Sep 17 2020 at 02:20)</a>:</h4>
<p>clang builds on 5 year old compilers, is my point.</p>



<a name="210341639"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341639" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341639">(Sep 17 2020 at 02:21)</a>:</h4>
<p>That results in never needing to bootstrap for the average developer.</p>



<a name="210341646"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341646" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341646">(Sep 17 2020 at 02:21)</a>:</h4>
<p>That's their choice to limit themselves to C++11(?)</p>



<a name="210341657"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341657" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341657">(Sep 17 2020 at 02:21)</a>:</h4>
<p>the average (Rust) developer doesn't use a 5 years old rustc either</p>



<a name="210341660"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341660" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341660">(Sep 17 2020 at 02:21)</a>:</h4>
<p>I think it's now C++14 minus some stuff that isn't well supported.</p>



<a name="210341664"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341664" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341664">(Sep 17 2020 at 02:22)</a>:</h4>
<p>Yes, that IS an advantage of rustc compiling on stable again. It makes it easier to introduce a longer term MSRV regime like N year old compilers. But it's a separate decision.</p>



<a name="210341711"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341711" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341711">(Sep 17 2020 at 02:22)</a>:</h4>
<p>Rust 1.0 is 5 years old, so no. But that's not my point.</p>



<a name="210341714"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341714" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341714">(Sep 17 2020 at 02:22)</a>:</h4>
<p>Personally I feel rustc should follow what most of the ecosystem does, most of the ecosystem is on stable compilers but usually uses recent compilers as MSRV</p>



<a name="210341716"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341716" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341716">(Sep 17 2020 at 02:22)</a>:</h4>
<p>I would expect <em>even if</em> someone convinced me and others that this MCP was a good idea, we would need another one to even consider lowering MSRV requirements.</p>



<a name="210341740"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341740" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341740">(Sep 17 2020 at 02:23)</a>:</h4>
<p>I'm interested in rustc in 5 years being able to compile on stable, in the hope that working on it then will be as easy as working on clang now. :P</p>



<a name="210341804"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341804" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341804">(Sep 17 2020 at 02:24)</a>:</h4>
<p>Sure, the path is paved with the resistance of MCP's but fine. This is the first one, right? :P</p>



<a name="210341840"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341840" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341840">(Sep 17 2020 at 02:25)</a>:</h4>
<p>I am unconvinced that being able to use old compilers is a significant boost in "ease of working on"</p>



<a name="210341845"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341845" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341845">(Sep 17 2020 at 02:25)</a>:</h4>
<p>(or stable compilers)</p>



<a name="210341868"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341868" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341868">(Sep 17 2020 at 02:26)</a>:</h4>
<p>Is  needing a custom build system a hurdle? Sure, yes, definitely. But if you already have that, it does not seem much of a hurdle to -- like really any other nightly Rust project -- say "please use this nightly" (or in rustc's case, <em>this beta</em>)</p>



<a name="210341910"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341910" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341910">(Sep 17 2020 at 02:26)</a>:</h4>
<p>I.e in theory, this MCP is to answer the question of, if I submit two PR's tomorrow, 1) which removes <code>bool::then_some</code> from <code>compiler/</code> and 2) which stabilizes <code>bool::then_some</code>, then one of them will get chosen instead of both being rejected. Right?</p>



<a name="210341920"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341920" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341920">(Sep 17 2020 at 02:26)</a>:</h4>
<p>Well, it depends on your motivation</p>



<a name="210341923"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341923" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341923">(Sep 17 2020 at 02:26)</a>:</h4>
<p>Stabilizations require FCPs and team approvals</p>



<a name="210341927"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341927" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341927">(Sep 17 2020 at 02:27)</a>:</h4>
<p>if it's "then_some is less readable in these places" then I'd happily r+ that PR if I agree we do end up with more readable code</p>



<a name="210341932"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341932" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341932">(Sep 17 2020 at 02:27)</a>:</h4>
<p>if it's "less unstable feature use" then I don't personally consider that an argument, and no one's convinced me otherwise yet :)</p>



<a name="210341935"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341935" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341935">(Sep 17 2020 at 02:27)</a>:</h4>
<p>Sure, but if <code>bool::then_some</code> gets rejected for stabilization, then removing it should be feasible and the other PR accepted, right?</p>



<a name="210341940"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341940" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341940">(Sep 17 2020 at 02:27)</a>:</h4>
<p>Hence the goal of this MCP. To answer the higher level question of direction.</p>



<a name="210341941"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341941" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341941">(Sep 17 2020 at 02:27)</a>:</h4>
<p>Depends on the rejection. If it's "we're removing it from std", of course it would be removed?</p>



<a name="210341983"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341983" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341983">(Sep 17 2020 at 02:28)</a>:</h4>
<p>Removed from use in the compiler.</p>



<a name="210341989"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341989" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341989">(Sep 17 2020 at 02:28)</a>:</h4>
<p>Usually features in Rust don't get rejected, they just slow down and discussion threads span years while people are debating on whether to <em>really</em> remove it or not :)</p>



<a name="210341996"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210341996" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210341996">(Sep 17 2020 at 02:28)</a>:</h4>
<p>In general, if the MCP were accepted, I feel that there will be more pressure to stabilize the features</p>



<a name="210342011"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342011" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342011">(Sep 17 2020 at 02:28)</a>:</h4>
<p>I disagree personally that there will be increased speed of stabilization, and would actually expect opposite effect personally</p>



<a name="210342023"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342023" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342023">(Sep 17 2020 at 02:29)</a>:</h4>
<p>I want to be able to submit two PRs and say, "pick". And have people actually pick and make progress.</p>



<a name="210342028"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342028" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342028">(Sep 17 2020 at 02:29)</a>:</h4>
<p>That seems immensely helpful.</p>



<a name="210342038"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342038" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342038">(Sep 17 2020 at 02:29)</a>:</h4>
<p>Doesn't work that way, and I don't want this MCP to make it work that way</p>



<a name="210342043"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342043" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342043">(Sep 17 2020 at 02:29)</a>:</h4>
<p><span class="user-mention" data-user-id="336395">@Ahmed Charles</span> that's not how rust development works</p>



<a name="210342064"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342064" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342064">(Sep 17 2020 at 02:30)</a>:</h4>
<p>I don't mean that literally.</p>



<a name="210342094"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342094" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342094">(Sep 17 2020 at 02:30)</a>:</h4>
<p>and it seems unhelpful, to be honest, to say "you have two options" -- clearly, the options are many. One of the easiest is "we're not sure yet"</p>



<a name="210342106"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342106" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342106">(Sep 17 2020 at 02:30)</a>:</h4>
<p>But ultimately, it is illogical to never stabilize a feature while always using it in the compiler itself.</p>



<a name="210342108"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342108" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342108">(Sep 17 2020 at 02:30)</a>:</h4>
<p>but no one is making that argument?</p>



<a name="210342109"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342109" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342109">(Sep 17 2020 at 02:30)</a>:</h4>
<p>and surprise that easiest option is where 99% of the unstable features are :)</p>



<a name="210342130"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342130" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342130">(Sep 17 2020 at 02:31)</a>:</h4>
<p>I made the 'pick one of these two' as the extreme opposite of that.</p>



<a name="210342135"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342135" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342135">(Sep 17 2020 at 02:31)</a>:</h4>
<p>If it's illogical to not pick one, then one must be chosen.</p>



<a name="210342176"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342176" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342176">(Sep 17 2020 at 02:32)</a>:</h4>
<p>no?</p>



<a name="210342180"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342180" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342180">(Sep 17 2020 at 02:32)</a>:</h4>
<p>well, I mean, that's a leap</p>



<a name="210342186"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342186" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> oliver <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342186">(Sep 17 2020 at 02:32)</a>:</h4>
<p>you always have the option not to choose</p>



<a name="210342190"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342190" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342190">(Sep 17 2020 at 02:32)</a>:</h4>
<p>It seems to be the logical conclusion.</p>



<a name="210342193"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342193" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342193">(Sep 17 2020 at 02:32)</a>:</h4>
<p>it is perfectly reasonable to not pick one, but just not make any decision yet</p>



<a name="210342205"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342205" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342205">(Sep 17 2020 at 02:33)</a>:</h4>
<p>"But ultimately, it is illogical to never stabilize a feature while always using it in the compiler itself." is very different from "illogical to not pick stabilization or removal <em>immediately</em>"</p>



<a name="210342206"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342206" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342206">(Sep 17 2020 at 02:33)</a>:</h4>
<p>One of the choices is "never stabilize", so not choosing is in fact, choosing.</p>



<a name="210342210"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342210" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342210">(Sep 17 2020 at 02:33)</a>:</h4>
<p>but no one is making that choice?</p>



<a name="210342221"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342221" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342221">(Sep 17 2020 at 02:33)</a>:</h4>
<p>if someone were, then maybe, but that's really not a choice I recall us ever making</p>



<a name="210342222"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342222" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342222">(Sep 17 2020 at 02:33)</a>:</h4>
<p>Sure, that's why it's a logical argument taken to infinity.</p>



<a name="210342224"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342224" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342224">(Sep 17 2020 at 02:33)</a>:</h4>
<p>But clearly, I'm not being clear.</p>



<a name="210342225"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342225" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342225">(Sep 17 2020 at 02:33)</a>:</h4>
<p>I am confused</p>



<a name="210342275"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342275" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> oliver <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342275">(Sep 17 2020 at 02:34)</a>:</h4>
<p>it's arguing extremes</p>



<a name="210342293"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342293" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342293">(Sep 17 2020 at 02:35)</a>:</h4>
<p>If I'm told that I can't submit a PR which removes an unstable feature from the compiler and I'm also told that I can't submit a PR to stabilize that feature, then the outcome is (lacking nuance) that the feature is permanently unstable.</p>



<a name="210342321"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342321" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> oliver <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342321">(Sep 17 2020 at 02:35)</a>:</h4>
<p>I don't think it's fair to equate stabilizing a feature with its use in the compiler</p>



<a name="210342325"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342325" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342325">(Sep 17 2020 at 02:35)</a>:</h4>
<p>Nuance is critical, though, and that seems identical to saying "we must never have unstable features because if they're unstable for a day then they will be unstable forever"</p>



<a name="210342329"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342329" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342329">(Sep 17 2020 at 02:36)</a>:</h4>
<p>(which is obviously untrue)</p>



<a name="210342376"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342376" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342376">(Sep 17 2020 at 02:36)</a>:</h4>
<p>Nuance is critical for a specific feature. But I don't see how to apply it when considering all 61 currently used by the compiler.</p>



<a name="210342394"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342394" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342394">(Sep 17 2020 at 02:37)</a>:</h4>
<p>I think the discussion has reached a point where it's not helpful any more</p>



<a name="210342397"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342397" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342397">(Sep 17 2020 at 02:37)</a>:</h4>
<p>Perhaps I'll ask the other question. Am I welcome to pick a random unstable feature and remove it from the compiler, assuming I do so correctly and submit it?</p>



<a name="210342408"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342408" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342408">(Sep 17 2020 at 02:37)</a>:</h4>
<p>Maybe the best way to make progress on this isn't an MCP any more but a rustc fork that compiles on stable</p>



<a name="210342413"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342413" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342413">(Sep 17 2020 at 02:38)</a>:</h4>
<p>And upstream being welcome to take the patches</p>



<a name="210342457"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342457" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342457">(Sep 17 2020 at 02:38)</a>:</h4>
<p>If there's demand in the ecosystem, ppl will use it</p>



<a name="210342464"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342464" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342464">(Sep 17 2020 at 02:38)</a>:</h4>
<p>That's the most insightful question I can ask, I suppose.</p>



<a name="210342472"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342472" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342472">(Sep 17 2020 at 02:38)</a>:</h4>
<p><span class="user-mention" data-user-id="336395">@Ahmed Charles</span> again, if your motivation is just "oh no unstable feature" then probably not</p>



<a name="210342478"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342478" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342478">(Sep 17 2020 at 02:38)</a>:</h4>
<p>But it's more work than an MCP and subsequently doing the porting to stable once</p>



<a name="210342492"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342492" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342492">(Sep 17 2020 at 02:39)</a>:</h4>
<p>I agree that so far I have not heard convincing arguments. I personally would not accept patches that are unconvincing in motivation to me :)</p>



<a name="210342498"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342498" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342498">(Sep 17 2020 at 02:39)</a>:</h4>
<p><span class="user-mention" data-user-id="116122">@simulacrum</span> Sure, let's assume I pick the best possible random unstable feature that no one likes.</p>



<a name="210342552"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342552" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342552">(Sep 17 2020 at 02:40)</a>:</h4>
<p>Of course the main benefit of stable-only is for contributors only, so the fork has to go further than that (e.g. more tolerant MSRV regime)</p>



<a name="210342554"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342554" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342554">(Sep 17 2020 at 02:40)</a>:</h4>
<p>Again, it has nothing to do with "unstable feature"</p>



<a name="210342562"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342562" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342562">(Sep 17 2020 at 02:40)</a>:</h4>
<p>If your patch is an improvement to the compiler codebase, then it would likely get accepted. Regardless of what it does (modulo backwards compat etc of course)</p>



<a name="210342580"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342580" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342580">(Sep 17 2020 at 02:41)</a>:</h4>
<p>Sure, but that's the entire point of this MCP, as I see it. Is to say, "Yes, removing unstable feature usage in the compiler is a worthwhile goal"</p>



<a name="210342587"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342587" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> oliver <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342587">(Sep 17 2020 at 02:41)</a>:</h4>
<p>All roads lead to stabilization?</p>



<a name="210342607"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342607" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342607">(Sep 17 2020 at 02:41)</a>:</h4>
<p>That's my understanding of the MCP, but I've not personally yet been convinced by either <span class="user-mention" data-user-id="120096">@est31</span> or anyone else arguing for this MCP that it <em>is</em> a worthwhile goal as a standalone thing at this point in time.</p>



<a name="210342610"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342610" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342610">(Sep 17 2020 at 02:42)</a>:</h4>
<p>So, it only has to do with "unstable feature".</p>



<a name="210342666"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342666" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> simulacrum <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342666">(Sep 17 2020 at 02:42)</a>:</h4>
<p>(The MCP has not yet been accepted, and current rustc policy definitely doesn't see unstable features as bad)</p>



<a name="210342686"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210342686" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Ahmed Charles <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210342686">(Sep 17 2020 at 02:43)</a>:</h4>
<p>That's obvious.</p>



<a name="210349158"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210349158" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210349158">(Sep 17 2020 at 05:16)</a>:</h4>
<p>Btw <span class="user-mention" data-user-id="116122">@simulacrum</span> offtopic but I'm working on rustc right now and tried out the binary LLVM download feature. It's much much nicer now! Now one only needs to have bootstrap not check out the llvm submodule if the feature is enabled. It takes over a gb of storage space :). 30% of my rustc checkout storage space use (including generated binaries!) is llvm submodule checkouts, but 2 of them are old/outdated.</p>



<a name="210351457"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210351457" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210351457">(Sep 17 2020 at 06:11)</a>:</h4>
<p>Also see <a href="https://github.com/rust-lang/rust/pull/76821">https://github.com/rust-lang/rust/pull/76821</a> with some low hanging fruit, hopefully non-controversial</p>



<a name="210374187"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210374187" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Wesley Wiser <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210374187">(Sep 17 2020 at 11:02)</a>:</h4>
<p><span class="user-mention" data-user-id="120096">@est31</span> If you drop the last commit (<code>RawVec</code> -&gt; <code>Vec</code>), I don't think there would be any contention about accepting the PR. It seems like an obvious improvement to me regardless of this MCP.</p>



<a name="210380974"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210380974" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210380974">(Sep 17 2020 at 12:25)</a>:</h4>
<p>Great! It's now dropped</p>



<a name="210623717"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210623717" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Joshua Nelson <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210623717">(Sep 19 2020 at 16:41)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232545">Joshua Nelson</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358/near/210019890">said</a>:</p>
<blockquote>
<p>I think where we disagree is 'small' roadbumps ;)</p>
</blockquote>
<p>compile times strike again <a href="#narrow/stream/182449-t-compiler.2Fhelp/topic/ui.20tests">https://rust-lang.zulipchat.com/#narrow/stream/182449-t-compiler.2Fhelp/topic/ui.20tests</a></p>



<a name="210780370"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/210780370" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scottmcm <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#210780370">(Sep 21 2020 at 18:21)</a>:</h4>
<p>Thanks for making that PR, <span class="user-mention" data-user-id="120096">@est31</span>.  Definitely nice to cleanup the superfluous or exposed-on-stable ones, regardless of how this MCP goes.</p>



<a name="219295381"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/219295381" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Nadrieril <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#219295381">(Dec 09 2020 at 03:54)</a>:</h4>
<p><span class="user-mention" data-user-id="120096">@est31</span>  I haven't followed the whole conversation but there's a question I haven't seen answered: what are examples of nightly features that you feel make it harder for new contributors? I assume it's not just the concept of a nightly feature that you find to be a roadblock</p>



<a name="219461118"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/219461118" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#219461118">(Dec 10 2020 at 11:40)</a>:</h4>
<p><span class="user-mention" data-user-id="245339">@Nadrieril</span> I agree the concept of a nightly feature is easy to explain. It's more just that you won't find the nightly features themselves in Rust textbooks. some nightly features used by rustc are documented, but most are not, or underdocumented. And they are less commonly used, so most folks who come from the greater Rust ecosystem which is mostly on stable might not have encountered those features. Having to deal with them in the compiler adds to the mental burden.</p>



<a name="219461351"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/219461351" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> est31 <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#219461351">(Dec 10 2020 at 11:43)</a>:</h4>
<p>Like... rustc used to have a giant makefile as buildsystem. That was extremely weird for people coming from cargo projects. Nowadays it uses cargo instead and it's way more "standard", way more familiar for people. Originally the makefile made sense, as it predates cargo, but eventually its time came.</p>



<a name="219466275"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/219466275" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Nadrieril <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#219466275">(Dec 10 2020 at 12:41)</a>:</h4>
<p>@est31 I understand the idea. But for example all the nightly-only methods and traits are correctly documented and easy to find. And some other features are easy to understand despite their lack of documentation I think. That's why I'm asking you for specific examples of features you find hard to understand</p>



<a name="219466377"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/219466377" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Nadrieril <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#219466377">(Dec 10 2020 at 12:42)</a>:</h4>
<p>Cause if the problem is documentation, that could be easier to solve than not using the features. For example we could improve the unstable book and mention it at the beginning of the rustc dev guide</p>



<a name="219543114"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/219543114" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#219543114">(Dec 10 2020 at 22:28)</a>:</h4>
<p>i <em>thought</em> the main reason for the compiler to be buildable with stable was to make the bootstrap process simpler and also to make it easier for "normal" people to get into the compiler's development just using the stable version of rust they have from rustup</p>



<a name="219566985"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/219566985" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Nadrieril <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#219566985">(Dec 11 2020 at 05:20)</a>:</h4>
<p>(deleted, network issue)</p>



<a name="220569282"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/220569282" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> RalfJ <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#220569282">(Dec 21 2020 at 10:13)</a>:</h4>
<p><span class="user-mention silent" data-user-id="232545">Joshua Nelson</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358/near/210623717">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="232545">Joshua Nelson</span> <a href="#narrow/stream/233931-t-compiler.2Fmajor-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358/near/210019890">said</a>:</p>
<blockquote>
<p>I think where we disagree is 'small' roadbumps ;)</p>
</blockquote>
<p>compile times strike again <a href="#narrow/stream/182449-t-compiler.2Fhelp/topic/ui.20tests">https://rust-lang.zulipchat.com/#narrow/stream/182449-t-compiler.2Fhelp/topic/ui.20tests</a></p>
</blockquote>
<p>I don't understand how this proposal saves any time for that issue. If you change the compiler, you still need to build it before testing it. So <code>./x.py test src/test/ui --test-args XXX</code> (which is implicitly <code>--stage 1</code> these days) will not be any faster even if rustc can be built without nightly features, right?</p>



<a name="221003222"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/221003222" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Notification Bot <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#221003222">(Dec 27 2020 at 10:27)</a>:</h4>
<p>This topic was moved by <span class="user-mention silent" data-user-id="124288">oli</span> to <a class="stream-topic" data-stream-id="131828" href="/#narrow/stream/131828-t-compiler/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358">#t-compiler &gt; MCP: move compiler/ crates to stable Rust compiler-team#358</a></p>



<a name="221003443"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/233931-t-compiler/major%20changes/topic/MCP%3A%20move%20compiler/%20crates%20to%20stable%20Rust%20compiler-team%23358/near/221003443" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> oli <a href="https://rust-lang.github.io/zulip_archive/stream/233931-t-compiler/major-changes/topic/MCP.3A.20move.20compiler.2F.20crates.20to.20stable.20Rust.20compiler-team.23358.html#221003443">(Dec 27 2020 at 10:34)</a>:</h4>
<p>while a discussion about mentoring is somewhat relevant here, I moved it to a different topic, as this here is about the <em>technical</em> aspects of making working on the Rust compiler easier (I'm not saying that making the Rust compiler work on stable is doing that or not). Let's keep the discussion about mentoring or other things not directly related to the MCP in the other thread.</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>